mirror of https://github.com/portainer/portainer
26 lines
701 B
Go
26 lines
701 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
|
|
}
|
|
|
|
log.Warn().Msgf("This api is deprecated. Use %s instead", newUrl)
|
|
|
|
redirectedRequest := r.Clone(r.Context())
|
|
redirectedRequest.URL.Path = newUrl
|
|
router.ServeHTTP(w, redirectedRequest)
|
|
})
|
|
}
|