These operations are not valid:
Lines 178 to 183 in 3c7235e
Lines 243 to 245 in 3c7235e
Since URLs are a textual format, certain characters have semantic meaning. Percent-encoding can be used to escape those characters. For example, if we want a single path component named "AC/DC", we'll have a problem, because "/" can mean a path separator:
/music/bands/AC/DC
^^^^^ - 2 components! β
So instead, we have to escape the use of "/" within name "AC/DC":
/music/bands/AC%2FDC
^^^^^^^ - 1 component β
If you percent-decode the entire path string, we irreversibly lose the information that "AC/DC" was supposed to be a single path component.
Instead, the correct way to do this is to split the component (still escaped) up in to its constituent parts, decode each component, escape any characters with semantic meaning, and join them up again. For the path, that means breaking it up in to path components and ensuring "/" and "" characters are escaped again in each component before you rebuild the path string. For the query, it means doing the same for each key and value (not each key-value pair - they need to be broken down in to their smallest subcomponents).
Pay now to fund the work behind this issue.
Get updates on progress being made.
Maintainer is rewarded once the issue is completed.
You're funding impactful open source efforts
You want to contribute to this effort
You want to get funding like this too