Commit 30884ebf authored by Kamil Trzcinski's avatar Kamil Trzcinski

Fix authorization request

parent a9058bcd
...@@ -60,12 +60,39 @@ type Response struct { ...@@ -60,12 +60,39 @@ type Response struct {
TempPath string TempPath string
} }
// singleJoiningSlash is taken from reverseproxy.go:NewSingleHostReverseProxy
func singleJoiningSlash(a, b string) string {
aslash := strings.HasSuffix(a, "/")
bslash := strings.HasPrefix(b, "/")
switch {
case aslash && bslash:
return a + b[1:]
case !aslash && !bslash:
return a + "/" + b
}
return a + b
}
// rebaseUrl is taken from reverseproxy.go:NewSingleHostReverseProxy
func rebaseUrl(url *url.URL, onto *url.URL, suffix string) *url.URL {
newUrl := *url
newUrl.Scheme = onto.Scheme
newUrl.Host = onto.Host
if suffix != "" {
newUrl.Path = singleJoiningSlash(url.Path, suffix)
}
if onto.RawQuery == "" || newUrl.RawQuery == "" {
newUrl.RawQuery = onto.RawQuery + newUrl.RawQuery
} else {
newUrl.RawQuery = onto.RawQuery + "&" + newUrl.RawQuery
}
return &newUrl
}
func (api *API) newRequest(r *http.Request, body io.Reader, suffix string) (*http.Request, error) { func (api *API) newRequest(r *http.Request, body io.Reader, suffix string) (*http.Request, error) {
url := *api.URL // Make a copy of api.URL
url.Path = r.URL.RequestURI() + suffix
authReq := &http.Request{ authReq := &http.Request{
Method: r.Method, Method: r.Method,
URL: &url, URL: rebaseUrl(r.URL, api.URL, suffix),
Header: proxy.HeaderClone(r.Header), Header: proxy.HeaderClone(r.Header),
} }
if body != nil { if body != nil {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment