fix: validate server URL has a host #57
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #53.
The linked issue was caused by a subtle difference in how we add paths to the server URLs in Go and Swift
In both languages, the (erroneous) url
https:/dev.coder.com
is parsed the same:https
nil
/dev.coder.com
However, in Swift, when we transform a server URL into a specific route on that server, such as
/api/v2/users/me
, we don't replace any existing part of the relative path, we just append to it, producinghttp:/dev.coder.com/api/v2/users/me
, which gets sent, and the server responds to, just fine.In Go, when we do the same transformation, we call
svrURL.Parse("/api/v2/users/me")
, which replaces the existing relative path,/dev.coder.com
, leading to the error in the linked issue, which has nodev.coder.com
portion at all.Previously, we were only ensuring that the link was a valid URL, and that the scheme was
https
.Now, we'll require that all server URLs have a host component. This means
http:/dev.coder.com
fails to validate with a better error message.