mirror of https://github.com/portainer/portainer
				
				
				
			
		
			
				
	
	
		
			32 lines
		
	
	
		
			807 B
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			807 B
		
	
	
	
		
			Go
		
	
	
package middlewares
 | 
						|
 | 
						|
import (
 | 
						|
	"net/http"
 | 
						|
 | 
						|
	httperror "github.com/portainer/portainer/pkg/libhttp/error"
 | 
						|
	"github.com/rs/zerolog/log"
 | 
						|
)
 | 
						|
 | 
						|
// deprecate api route
 | 
						|
func Deprecated(router http.Handler, urlBuilder func(w http.ResponseWriter, r *http.Request) (string, *httperror.HandlerError)) http.Handler {
 | 
						|
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 | 
						|
		newUrl, err := urlBuilder(w, r)
 | 
						|
		if err != nil {
 | 
						|
			httperror.WriteError(w, err.StatusCode, err.Error(), err)
 | 
						|
			return
 | 
						|
		}
 | 
						|
 | 
						|
		if newUrl == "" {
 | 
						|
			log.Warn().Msg("This api is deprecated.")
 | 
						|
			router.ServeHTTP(w, r)
 | 
						|
			return
 | 
						|
		}
 | 
						|
 | 
						|
		log.Warn().Msgf("This api is deprecated. Use %s instead", newUrl)
 | 
						|
 | 
						|
		redirectedRequest := r.Clone(r.Context())
 | 
						|
		redirectedRequest.URL.Path = newUrl
 | 
						|
		router.ServeHTTP(w, redirectedRequest)
 | 
						|
	})
 | 
						|
}
 |