Fixes to Url default handling and query parameters #2828
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.
This PR addresses some inconsistencies with the
Url
class.Ensure Url provides default port for default scheme
When building a URL the Scheme defaults to HTTP if not specified.
This means the port should also default to 80, but it doesn't.
For example:
This produces the correct URL text
http://api.thingspeak.com/update
with the default scheme, butgetPort()
incorrectly returns 0.See #1937 (comment),
PR #1945 provided a fix but didn't actually resolve the underlying issue.
Url::toString() doesn't lowercase scheme
For example:
Incorrectly produces
HTTP://api.thingspeak.com/update
.Add
Url::getQueryParameter
methodCare is required when reading query parameters as direct access to the
Query
member variable means non-existent keys get added. Therefore aconst
cast is required. This method provides a more convenient way for safely reading values, and also allows a default to be given where the value doesn't exist.