{"action":"created","issue":{"url":"https://api.github.com/repos/godotengine/godot/issues/15503","repository_url":"https://api.github.com/repos/godotengine/godot","labels_url":"https://api.github.com/repos/godotengine/godot/issues/15503/labels{/name}","comments_url":"https://api.github.com/repos/godotengine/godot/issues/15503/comments","events_url":"https://api.github.com/repos/godotengine/godot/issues/15503/events","html_url":"https://github.com/godotengine/godot/issues/15503","id":286875707,"node_id":"MDU6SXNzdWUyODY4NzU3MDc=","number":15503,"title":"HTTPClient.query_string_from_dict does does not handle nested dictionaries","user":{"login":"VitaZheltyakov","id":5693437,"node_id":"MDQ6VXNlcjU2OTM0Mzc=","avatar_url":"https://avatars3.githubusercontent.com/u/5693437?v=4","gravatar_id":"","url":"https://api.github.com/users/VitaZheltyakov","html_url":"https://github.com/VitaZheltyakov","followers_url":"https://api.github.com/users/VitaZheltyakov/followers","following_url":"https://api.github.com/users/VitaZheltyakov/following{/other_user}","gists_url":"https://api.github.com/users/VitaZheltyakov/gists{/gist_id}","starred_url":"https://api.github.com/users/VitaZheltyakov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VitaZheltyakov/subscriptions","organizations_url":"https://api.github.com/users/VitaZheltyakov/orgs","repos_url":"https://api.github.com/users/VitaZheltyakov/repos","events_url":"https://api.github.com/users/VitaZheltyakov/events{/privacy}","received_events_url":"https://api.github.com/users/VitaZheltyakov/received_events","type":"User","site_admin":false},"labels":[{"id":73330064,"node_id":"MDU6TGFiZWw3MzMzMDA2NA==","url":"https://api.github.com/repos/godotengine/godot/labels/bug","name":"bug","color":"ff2222","default":true},{"id":649800701,"node_id":"MDU6TGFiZWw2NDk4MDA3MDE=","url":"https://api.github.com/repos/godotengine/godot/labels/topic:network","name":"topic:network","color":"ffdd44","default":false}],"state":"open","locked":false,"assignee":{"login":"Faless","id":1687918,"node_id":"MDQ6VXNlcjE2ODc5MTg=","avatar_url":"https://avatars2.githubusercontent.com/u/1687918?v=4","gravatar_id":"","url":"https://api.github.com/users/Faless","html_url":"https://github.com/Faless","followers_url":"https://api.github.com/users/Faless/followers","following_url":"https://api.github.com/users/Faless/following{/other_user}","gists_url":"https://api.github.com/users/Faless/gists{/gist_id}","starred_url":"https://api.github.com/users/Faless/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Faless/subscriptions","organizations_url":"https://api.github.com/users/Faless/orgs","repos_url":"https://api.github.com/users/Faless/repos","events_url":"https://api.github.com/users/Faless/events{/privacy}","received_events_url":"https://api.github.com/users/Faless/received_events","type":"User","site_admin":false},"assignees":[{"login":"Faless","id":1687918,"node_id":"MDQ6VXNlcjE2ODc5MTg=","avatar_url":"https://avatars2.githubusercontent.com/u/1687918?v=4","gravatar_id":"","url":"https://api.github.com/users/Faless","html_url":"https://github.com/Faless","followers_url":"https://api.github.com/users/Faless/followers","following_url":"https://api.github.com/users/Faless/following{/other_user}","gists_url":"https://api.github.com/users/Faless/gists{/gist_id}","starred_url":"https://api.github.com/users/Faless/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Faless/subscriptions","organizations_url":"https://api.github.com/users/Faless/orgs","repos_url":"https://api.github.com/users/Faless/repos","events_url":"https://api.github.com/users/Faless/events{/privacy}","received_events_url":"https://api.github.com/users/Faless/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/godotengine/godot/milestones/7","html_url":"https://github.com/godotengine/godot/milestone/7","labels_url":"https://api.github.com/repos/godotengine/godot/milestones/7/labels","id":2529217,"node_id":"MDk6TWlsZXN0b25lMjUyOTIxNw==","number":7,"title":"3.1","description":"","creator":{"login":"akien-mga","id":4701338,"node_id":"MDQ6VXNlcjQ3MDEzMzg=","avatar_url":"https://avatars0.githubusercontent.com/u/4701338?v=4","gravatar_id":"","url":"https://api.github.com/users/akien-mga","html_url":"https://github.com/akien-mga","followers_url":"https://api.github.com/users/akien-mga/followers","following_url":"https://api.github.com/users/akien-mga/following{/other_user}","gists_url":"https://api.github.com/users/akien-mga/gists{/gist_id}","starred_url":"https://api.github.com/users/akien-mga/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akien-mga/subscriptions","organizations_url":"https://api.github.com/users/akien-mga/orgs","repos_url":"https://api.github.com/users/akien-mga/repos","events_url":"https://api.github.com/users/akien-mga/events{/privacy}","received_events_url":"https://api.github.com/users/akien-mga/received_events","type":"User","site_admin":false},"open_issues":1012,"closed_issues":3001,"state":"open","created_at":"2017-05-18T13:33:56Z","updated_at":"2018-09-06T17:34:57Z","due_on":null,"closed_at":null},"comments":5,"created_at":"2018-01-08T20:32:52Z","updated_at":"2018-09-06T17:48:32Z","closed_at":null,"author_association":"NONE","body":"**Godot version:**\r\nAll versions (2.1.x and 3)\r\n\r\n**OS/device including version:**\r\nAll\r\n\r\n**Issue description:**\r\n`HTTPClient.query_string_from_dict` does does not handle nested dictionaries (see examples). Now the nested dictionaries are transformed into an unconvertible construct.\r\n\r\n**Steps to reproduce:**\r\nNow:\r\n`var dic = {\r\n\t'arg1' : 'foo',\r\n\t'arg2' : {\r\n\t\t'sub1' : 'boo',\r\n\t\t'sub2' : 'koo'\r\n\t}\r\n}\r\nprint(http.query_string_from_dict(dic))`\r\nReturn `arg1=foo&arg2=%28sub1%3Aboo%29%2C%20%28sub2%3Akoo%29`. This is wrong. \r\nNeed: `arg1=foo&arg2=sub1%3Dboo%26sub2%3Dkoo`\r\n  "},"comment":{"url":"https://api.github.com/repos/godotengine/godot/issues/comments/419183131","html_url":"https://github.com/godotengine/godot/issues/15503#issuecomment-419183131","issue_url":"https://api.github.com/repos/godotengine/godot/issues/15503","id":419183131,"node_id":"MDEyOklzc3VlQ29tbWVudDQxOTE4MzEzMQ==","user":{"login":"Faless","id":1687918,"node_id":"MDQ6VXNlcjE2ODc5MTg=","avatar_url":"https://avatars2.githubusercontent.com/u/1687918?v=4","gravatar_id":"","url":"https://api.github.com/users/Faless","html_url":"https://github.com/Faless","followers_url":"https://api.github.com/users/Faless/followers","following_url":"https://api.github.com/users/Faless/following{/other_user}","gists_url":"https://api.github.com/users/Faless/gists{/gist_id}","starred_url":"https://api.github.com/users/Faless/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Faless/subscriptions","organizations_url":"https://api.github.com/users/Faless/orgs","repos_url":"https://api.github.com/users/Faless/repos","events_url":"https://api.github.com/users/Faless/events{/privacy}","received_events_url":"https://api.github.com/users/Faless/received_events","type":"User","site_admin":false},"created_at":"2018-09-06T17:48:32Z","updated_at":"2018-09-06T17:48:32Z","author_association":"CONTRIBUTOR","body":"> Oh my god ... what are we talking about ...\r\n\r\nThey are talking about the standard, which as they both tried to explain, do not include encoding complex data types. URI scheme is byte-level and talks only chars ([see RFC](https://tools.ietf.org/html/rfc3986#section-2.1)) while HTML forms do not use any special dict/array encoding either as they do not support them (see [www-url-encoding specification](https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1)).\r\n\r\nAs an example, here is what happens when testing with Javascript:\r\n```javascript\r\nvar params = new URLSearchParams()\r\nparams.append('key1', 'val') // key1=val\r\nparams.append('key2', 42) // key2=42\r\nparams.append('key3', ['a','b','c']) // key3=a%2Cb%2Cc& (a,b,c)\r\nparams.append('key4', {'sub1': 'a', 'sub2': 'b'}) // key4=%5Bobject+Object%5D ([object Object])\r\n\r\nconsole.log(params.toString()) // prints: key1=val&key2=42&key3=a%2Cb%2Cc&key4=%5Bobject+Object%5D\r\n\r\n\r\n// Testing your \"Need\"\r\nvar params = new URLSearchParams('arg1=foo&arg2=sub1%3Dboo%26sub2%3Dkoo')\r\nconsole.log(params.get('arg2')) // prints: sub1=boo&sub2=koo (a string, not an array nor object of some kind)\r\n```\r\n\r\nWhatever we do in this case would be non standard. We could just return an error when encoding non standard data types, but I think it's also fine this way where we encode using `var2str`, in the end, that's what JS does."}}
{"actor":{"display_login":"Faless"}}