summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjwijenbergh <jeroenwijenbergh@protonmail.com>2022-09-20 17:58:22 +0200
committerjwijenbergh <jeroenwijenbergh@protonmail.com>2022-09-20 17:58:22 +0200
commit5abf8464d66209ccd2b81aac1cdafea62b7852e2 (patch)
tree74a203718fafe06159e07c9a604a35bbbb977efe
parentbde4fff11d042119a283f070258ea9e3f55ad2c3 (diff)
API: Append paths using path's Join method
-rw-r--r--internal/server/api.go19
-rw-r--r--internal/server/common.go2
2 files changed, 16 insertions, 5 deletions
diff --git a/internal/server/api.go b/internal/server/api.go
index 1893f6e..d824c4a 100644
--- a/internal/server/api.go
+++ b/internal/server/api.go
@@ -6,6 +6,7 @@ import (
"fmt"
"net/http"
"net/url"
+ "path"
"time"
httpw "github.com/eduvpn/eduvpn-common/internal/http"
@@ -14,8 +15,13 @@ import (
func APIGetEndpoints(baseURL string) (*ServerEndpoints, error) {
errorMessage := "failed getting server endpoints"
- url := fmt.Sprintf("%s/%s", baseURL, WellKnownPath)
- _, body, bodyErr := httpw.HTTPGet(url)
+ url, urlErr := url.Parse(baseURL)
+ if urlErr != nil {
+ return nil, &types.WrappedErrorMessage{Message: errorMessage, Err: urlErr}
+ }
+
+ url.Path = path.Join(url.Path, WellKnownPath)
+ _, body, bodyErr := httpw.HTTPGet(url.String())
if bodyErr != nil {
return nil, &types.WrappedErrorMessage{Message: errorMessage, Err: bodyErr}
@@ -48,7 +54,12 @@ func apiAuthorized(
return nil, nil, &types.WrappedErrorMessage{Message: errorMessage, Err: baseErr}
}
- url := base.Endpoints.API.V3.API + endpoint
+ // Join the paths
+ url, urlErr := url.Parse(base.Endpoints.API.V3.API)
+ if urlErr != nil {
+ return nil, nil, &types.WrappedErrorMessage{Message: errorMessage, Err: urlErr}
+ }
+ url.Path = path.Join(url.Path, endpoint)
// Make sure the tokens are valid, this will return an error if re-login is needed
oauthErr := EnsureTokens(server)
@@ -63,7 +74,7 @@ func apiAuthorized(
} else {
opts.Headers = http.Header{headerKey: {headerValue}}
}
- return httpw.HTTPMethodWithOpts(method, url, opts)
+ return httpw.HTTPMethodWithOpts(method, url.String(), opts)
}
func apiAuthorizedRetry(
diff --git a/internal/server/common.go b/internal/server/common.go
index 62518cc..eaa8cdf 100644
--- a/internal/server/common.go
+++ b/internal/server/common.go
@@ -92,7 +92,7 @@ type ServerEndpoints struct {
}
// Make this a var which we can overwrite in the tests
-var WellKnownPath string = ".well-known/vpn-user-portal"
+var WellKnownPath string = "/.well-known/vpn-user-portal"
func (servers *Servers) GetCurrentServer() (Server, error) {
errorMessage := "failed getting current server"