[bug fix] Stop manual URI parsing/escaping and use CGI::parse #119
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.
Problem
Sometimes, users need to pass URL strings that contain query strings as a parameter.
E.g.,
website_url
parameter from the POST accounts/:account_id/cards/website endpoint (Ads API).In this case, they have to escape the URL strings in order to let the parser to parse parameters correctly:
raw:
https://developer.twitter.com/params?aaa=bbb&ccc=ddd
parsed:
https%3A%2F%2Fdeveloper.twitter.com%2Fparams%3Faaa%3Dbbb%26ccc%3Dddd
but the problem is, this code block is doing some extra job and hence the parsed parameter I included in the above twurl request gets "double-escaped".
https://github.com/twitter/twurl/blob/v0.9.3/lib/twurl/cli.rb#L161-L167
so the above twurl request will actually fail like this:
Solution
Just stop doing manual URI parsing and use the
CGI::parse
method instead.Result
As you can see, with this patch,
"website_url": "https://developer.twitter.com/params?aaa=bbb&ccc=ddd",
which is what I expect to see.
Other bug fixes
This PR includes other bug fixes that will resolve the below issues:
#117
#77 (initial PR was: #108)