{"action":"created","issue":{"url":"https://api.github.com/repos/vmg/houdini/issues/16","labels_url":"https://api.github.com/repos/vmg/houdini/issues/16/labels{/name}","comments_url":"https://api.github.com/repos/vmg/houdini/issues/16/comments","events_url":"https://api.github.com/repos/vmg/houdini/issues/16/events","html_url":"https://github.com/vmg/houdini/pull/16","id":64242518,"number":16,"title":"Implement `url_component` escaping/unescaping","user":{"login":"vmg","id":42793,"avatar_url":"https://avatars.githubusercontent.com/u/42793?v=3","gravatar_id":"","url":"https://api.github.com/users/vmg","html_url":"https://github.com/vmg","followers_url":"https://api.github.com/users/vmg/followers","following_url":"https://api.github.com/users/vmg/following{/other_user}","gists_url":"https://api.github.com/users/vmg/gists{/gist_id}","starred_url":"https://api.github.com/users/vmg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vmg/subscriptions","organizations_url":"https://api.github.com/users/vmg/orgs","repos_url":"https://api.github.com/users/vmg/repos","events_url":"https://api.github.com/users/vmg/events{/privacy}","received_events_url":"https://api.github.com/users/vmg/received_events","type":"User","site_admin":true},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2015-03-25T11:01:17Z","updated_at":"2015-03-25T14:25:51Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/vmg/houdini/pulls/16","html_url":"https://github.com/vmg/houdini/pull/16","diff_url":"https://github.com/vmg/houdini/pull/16.diff","patch_url":"https://github.com/vmg/houdini/pull/16.patch"},"body":"As requested by @ptoomey3:\r\n\r\n* during `unescape_url` you should substitute `+` for space before you do any percent decoding. Doing it after makes it such that a percent encoded plus (`%2b`) is first decoded to a `+`, but then that is translated to a space. In the end, the current code makes it so that a `+` can never end up in unescaped output. \r\n* add a new function `escape_uri_component`. This works exactly the same as `escape_url`, but encodes space as `%20` instead of `+`. I guess technically we also need an `unescape_uri_component`, though I think the implementation will be exactly the same as `unescape_uri`. \r\n\r\nI think this has the functionality you wanted."},"comment":{"url":"https://api.github.com/repos/vmg/houdini/issues/comments/86049069","html_url":"https://github.com/vmg/houdini/pull/16#issuecomment-86049069","issue_url":"https://api.github.com/repos/vmg/houdini/issues/16","id":86049069,"user":{"login":"ptoomey3","id":103360,"avatar_url":"https://avatars.githubusercontent.com/u/103360?v=3","gravatar_id":"","url":"https://api.github.com/users/ptoomey3","html_url":"https://github.com/ptoomey3","followers_url":"https://api.github.com/users/ptoomey3/followers","following_url":"https://api.github.com/users/ptoomey3/following{/other_user}","gists_url":"https://api.github.com/users/ptoomey3/gists{/gist_id}","starred_url":"https://api.github.com/users/ptoomey3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ptoomey3/subscriptions","organizations_url":"https://api.github.com/users/ptoomey3/orgs","repos_url":"https://api.github.com/users/ptoomey3/repos","events_url":"https://api.github.com/users/ptoomey3/events{/privacy}","received_events_url":"https://api.github.com/users/ptoomey3/received_events","type":"User","site_admin":true},"created_at":"2015-03-25T14:25:51Z","updated_at":"2015-03-25T14:25:51Z","body":"Just to be sure I can double check the lookup tables to make sure it matches up with what we are looking to do. I'll give a final :+1: before you merge. "}}