{"action":"opened","issue":{"url":"https://api.github.com/repos/solettaproject/soletta/issues/1084","labels_url":"https://api.github.com/repos/solettaproject/soletta/issues/1084/labels{/name}","comments_url":"https://api.github.com/repos/solettaproject/soletta/issues/1084/comments","events_url":"https://api.github.com/repos/solettaproject/soletta/issues/1084/events","html_url":"https://github.com/solettaproject/soletta/issues/1084","id":117851420,"number":1084,"title":"flow/http-{client,server} support for composed packet types","user":{"login":"barbieri","id":1838,"avatar_url":"https://avatars.githubusercontent.com/u/1838?v=3","gravatar_id":"","url":"https://api.github.com/users/barbieri","html_url":"https://github.com/barbieri","followers_url":"https://api.github.com/users/barbieri/followers","following_url":"https://api.github.com/users/barbieri/following{/other_user}","gists_url":"https://api.github.com/users/barbieri/gists{/gist_id}","starred_url":"https://api.github.com/users/barbieri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/barbieri/subscriptions","organizations_url":"https://api.github.com/users/barbieri/orgs","repos_url":"https://api.github.com/users/barbieri/repos","events_url":"https://api.github.com/users/barbieri/events{/privacy}","received_events_url":"https://api.github.com/users/barbieri/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/solettaproject/soletta/labels/task","name":"task","color":"fbca04"}],"state":"open","locked":false,"assignee":{"login":"cabelitos","id":984610,"avatar_url":"https://avatars.githubusercontent.com/u/984610?v=3","gravatar_id":"","url":"https://api.github.com/users/cabelitos","html_url":"https://github.com/cabelitos","followers_url":"https://api.github.com/users/cabelitos/followers","following_url":"https://api.github.com/users/cabelitos/following{/other_user}","gists_url":"https://api.github.com/users/cabelitos/gists{/gist_id}","starred_url":"https://api.github.com/users/cabelitos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cabelitos/subscriptions","organizations_url":"https://api.github.com/users/cabelitos/orgs","repos_url":"https://api.github.com/users/cabelitos/repos","events_url":"https://api.github.com/users/cabelitos/events{/privacy}","received_events_url":"https://api.github.com/users/cabelitos/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/solettaproject/soletta/milestones/1","html_url":"https://github.com/solettaproject/soletta/milestones/v1","labels_url":"https://api.github.com/repos/solettaproject/soletta/milestones/1/labels","id":1307037,"number":1,"title":"v1","description":"First stable release","creator":{"login":"barbieri","id":1838,"avatar_url":"https://avatars.githubusercontent.com/u/1838?v=3","gravatar_id":"","url":"https://api.github.com/users/barbieri","html_url":"https://github.com/barbieri","followers_url":"https://api.github.com/users/barbieri/followers","following_url":"https://api.github.com/users/barbieri/following{/other_user}","gists_url":"https://api.github.com/users/barbieri/gists{/gist_id}","starred_url":"https://api.github.com/users/barbieri/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/barbieri/subscriptions","organizations_url":"https://api.github.com/users/barbieri/orgs","repos_url":"https://api.github.com/users/barbieri/repos","events_url":"https://api.github.com/users/barbieri/events{/privacy}","received_events_url":"https://api.github.com/users/barbieri/received_events","type":"User","site_admin":false},"open_issues":10,"closed_issues":15,"state":"open","created_at":"2015-09-15T19:00:17Z","updated_at":"2015-11-19T16:29:37Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2015-11-19T16:29:37Z","updated_at":"2015-11-19T16:29:37Z","closed_at":null,"body":"http-client and server should both support composed packet types, allowing more complex data structures to be shared.\r\n\r\nFor simple internal types it is easy to support in both JSON and POST or get query parameters:\r\n * json: [\"a\", 1, false]\r\n * query: value=a&value=1&value=false \r\n\r\nFor nested, JSON is much easier, but I'm not sure we support those elsewhere\r\n * json: [\"a\", [1, false]]\r\n * query: would need to define some way to recurse, like: value=a&value=value%3d1%26value%3dfalse\r\n\r\nHow to expose those as nodes is also something to think about. We could offer meta-types to create them, that guarantees proper types are defined, validated and exchanged, or we may offer to do nodes with ports \"any\", this would check the packet type and do the best effort to encode to network, with the parse from network outputing something like JSON_ARRAY...\r\n\r\nI like the first case more, to expose as a meta-type.\r\n"}}