-
-
Notifications
You must be signed in to change notification settings - Fork 115
add URLSearchParams::to_raw_string() method #1023
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
anonrig
wants to merge
4
commits into
main
Choose a base branch
from
yagiz/add-to-raw-string
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 1 commit
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@anonrig Thanks for your effort. This is wonderful for supporting this new feature from us(Kong). I was wondering if it is possible to only remove
band then keep the other parts the same as before.Before:
a=b c&b=remove&d=e+fRemoved
b:a=b c&d=e+f(What we expected.)There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not following. Can you recommend a test case?
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@anonrig,
I wrote bindings to LuaJIT on this, and it is almost what we are after, here is an example code:
This outputs:
So the
RAWseems to still dospacenormalization aka+and(space) is turned to%20. In fact I was expecting it to turn them to+as you see inNORMALIZEDversion. But it is probably best if no normalization at all happens inrawmode, that is the output would look like this:There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good, if we remove percent encode calls above, we can make it more raw. Does that work for you? (just to double validate)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@anonrig that would work for us! Thank you. I was thinking about exactly the same (removing the percent encoding in raw).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@bungle I've updated the implementation. Please take a look. Once we're OK with the result, I'll land it and make a new release.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@anonrig, actually it now seems to normalize space as
(space) (and perhaps others too -> e.g. in decoded form, not in given form).input:
raw/unsafe output:
So it seems Ada will percent decode (and
+decode) internally and then output that (multiple different "things" will decode to same, and then we lose the original form — my bad I didn't notice it earlier). The problem is that we are looking a way to get query in like thisa=%20&b=,&c=remove&e=+&f=a b, and when we want to remove e.g.c, we don't want it to touch at all to rest of it. Meaning, it should just remove&c=removeand that's it. Everything else we like to maintain as we given,a=%20&b=,&e=+&f=a binto_raw/unsafe_string(aka don't do any processing on those that we are not touching — the removal being our current case and it is fine, if it could just handle that at least for now).Thus the previous implementation was closer to our goal. Now I am not sure if that is easy to do with Ada code base. I hope that I have not caused a lot of pain on my answer on this.
Or let's take a bit more complete example of
removec:Input:
We are looking to retain much of the original. Aka non-destructive/non-changing modification.
I am afraid it went more difficult than originally anticipated.
I think what we see is that when Ada takes the input, it will decode it, and in that process we lose information from the original, e.g. was there
+or%20(or even non-valid space) OR was there,or%2C. The decoding is needed though for APIs to work naturally, e.g.removeshould work like the keys are in decoded form. Perhaps what we need is then:ada_parse_unsafe_search_paramsin addition toada_search_params_to_unsafe_string? (though how to implementada_search_params_removethen as thekeyneeds to still be normalized for it to work?)