36 lines
584 B
Go
36 lines
584 B
Go
package director
|
|
|
|
import (
|
|
"net/http"
|
|
"net/url"
|
|
|
|
"forge.cadoles.com/Cadoles/go-proxy"
|
|
"forge.cadoles.com/Cadoles/go-proxy/util"
|
|
)
|
|
|
|
func createMiddlewareChain(handler http.Handler, middlewares []proxy.Middleware) http.Handler {
|
|
util.Reverse(middlewares)
|
|
|
|
for _, m := range middlewares {
|
|
handler = m(handler)
|
|
}
|
|
|
|
return handler
|
|
}
|
|
|
|
func getRequestURL(r *http.Request) *url.URL {
|
|
scheme := "http"
|
|
if r.URL.Scheme != "" {
|
|
scheme = r.URL.Scheme
|
|
}
|
|
|
|
url := url.URL{
|
|
Host: r.Host,
|
|
Scheme: scheme,
|
|
Path: r.URL.Path,
|
|
RawQuery: r.URL.RawQuery,
|
|
}
|
|
|
|
return &url
|
|
}
|