{"action":"created","comment":{"url":"https://api.github.com/repos/reactphp/http/pulls/comments/69929214","id":69929214,"diff_hunk":"@@ -0,0 +1,37 @@\n+<?php\n+\n+namespace React\\Http;\n+\n+use React\\Http\\Parser;\n+\n+class FormParserFactory","path":"src/FormParserFactory.php","position":7,"original_position":7,"commit_id":"7d75b008dafa2d639d248c800db63ae4ef96fa0d","original_commit_id":"3794e36453640a2ae1d5d5bbcae8b6f9ec9cb87a","user":{"login":"clue","id":776829,"avatar_url":"https://avatars.githubusercontent.com/u/776829?v=3","gravatar_id":"","url":"https://api.github.com/users/clue","html_url":"https://github.com/clue","followers_url":"https://api.github.com/users/clue/followers","following_url":"https://api.github.com/users/clue/following{/other_user}","gists_url":"https://api.github.com/users/clue/gists{/gist_id}","starred_url":"https://api.github.com/users/clue/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/clue/subscriptions","organizations_url":"https://api.github.com/users/clue/orgs","repos_url":"https://api.github.com/users/clue/repos","events_url":"https://api.github.com/users/clue/events{/privacy}","received_events_url":"https://api.github.com/users/clue/received_events","type":"User","site_admin":false},"body":"What does this \"parse\"? Not sure, how about a `FormParser` or `BodyParser` or `PayloadParser` namespace?\r\n\r\nThen again, what does this class do?","created_at":"2016-07-07T15:31:44Z","updated_at":"2016-07-07T15:31:44Z","html_url":"https://github.com/reactphp/http/pull/41#discussion_r69929214","pull_request_url":"https://api.github.com/repos/reactphp/http/pulls/41","_links":{"self":{"href":"https://api.github.com/repos/reactphp/http/pulls/comments/69929214"},"html":{"href":"https://github.com/reactphp/http/pull/41#discussion_r69929214"},"pull_request":{"href":"https://api.github.com/repos/reactphp/http/pulls/41"}}},"pull_request":{"url":"https://api.github.com/repos/reactphp/http/pulls/41","id":46521452,"html_url":"https://github.com/reactphp/http/pull/41","diff_url":"https://github.com/reactphp/http/pull/41.diff","patch_url":"https://github.com/reactphp/http/pull/41.patch","issue_url":"https://api.github.com/repos/reactphp/http/issues/41","number":41,"state":"open","locked":false,"title":"[WIP] Streaming request body parsing","user":{"login":"WyriHaximus","id":147145,"avatar_url":"https://avatars.githubusercontent.com/u/147145?v=3","gravatar_id":"","url":"https://api.github.com/users/WyriHaximus","html_url":"https://github.com/WyriHaximus","followers_url":"https://api.github.com/users/WyriHaximus/followers","following_url":"https://api.github.com/users/WyriHaximus/following{/other_user}","gists_url":"https://api.github.com/users/WyriHaximus/gists{/gist_id}","starred_url":"https://api.github.com/users/WyriHaximus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WyriHaximus/subscriptions","organizations_url":"https://api.github.com/users/WyriHaximus/orgs","repos_url":"https://api.github.com/users/WyriHaximus/repos","events_url":"https://api.github.com/users/WyriHaximus/events{/privacy}","received_events_url":"https://api.github.com/users/WyriHaximus/received_events","type":"User","site_admin":false},"body":"This PR is the follow up for #13. It started out to make multipart streaming but ended up making all bodies streaming.\r\n\r\nThe parsers emit a `post` event with the key and value of a post variable and `file` on uploaded files found in the request. On the request object `getFiles` is gone due to the streaming nature of the parsers. `getPost` is still there but it won't have everything until the entire request has been parsed.\r\n\r\nTodo:\r\n- [x] Normal body streaming\r\n- [x] Multipart body streaming\r\n- [x] Form URL Encoded body streaming\r\n- [x] File object for files in the request\r\n- [x] Make sure all parsers behave the same\r\n- [x] Make the form parsers optional\r\n- [X] Add buffered sink like helpers for request post fields and files\r\n- [X] Update readme with an example","created_at":"2015-10-01T13:14:09Z","updated_at":"2016-07-07T15:31:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c9d3328bfcdd126d153210ffa0b0cff2c293f2cb","assignee":{"login":"WyriHaximus","id":147145,"avatar_url":"https://avatars.githubusercontent.com/u/147145?v=3","gravatar_id":"","url":"https://api.github.com/users/WyriHaximus","html_url":"https://github.com/WyriHaximus","followers_url":"https://api.github.com/users/WyriHaximus/followers","following_url":"https://api.github.com/users/WyriHaximus/following{/other_user}","gists_url":"https://api.github.com/users/WyriHaximus/gists{/gist_id}","starred_url":"https://api.github.com/users/WyriHaximus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WyriHaximus/subscriptions","organizations_url":"https://api.github.com/users/WyriHaximus/orgs","repos_url":"https://api.github.com/users/WyriHaximus/repos","events_url":"https://api.github.com/users/WyriHaximus/events{/privacy}","received_events_url":"https://api.github.com/users/WyriHaximus/received_events","type":"User","site_admin":false},"assignees":[{"login":"WyriHaximus","id":147145,"avatar_url":"https://avatars.githubusercontent.com/u/147145?v=3","gravatar_id":"","url":"https://api.github.com/users/WyriHaximus","html_url":"https://github.com/WyriHaximus","followers_url":"https://api.github.com/users/WyriHaximus/followers","following_url":"https://api.github.com/users/WyriHaximus/following{/other_user}","gists_url":"https://api.github.com/users/WyriHaximus/gists{/gist_id}","starred_url":"https://api.github.com/users/WyriHaximus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WyriHaximus/subscriptions","organizations_url":"https://api.github.com/users/WyriHaximus/orgs","repos_url":"https://api.github.com/users/WyriHaximus/repos","events_url":"https://api.github.com/users/WyriHaximus/events{/privacy}","received_events_url":"https://api.github.com/users/WyriHaximus/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/reactphp/http/milestones/4","html_url":"https://github.com/reactphp/http/milestones/v0.4.2","labels_url":"https://api.github.com/repos/reactphp/http/milestones/4/labels","id":1658465,"number":4,"title":"v0.4.2","description":"","creator":{"login":"WyriHaximus","id":147145,"avatar_url":"https://avatars.githubusercontent.com/u/147145?v=3","gravatar_id":"","url":"https://api.github.com/users/WyriHaximus","html_url":"https://github.com/WyriHaximus","followers_url":"https://api.github.com/users/WyriHaximus/followers","following_url":"https://api.github.com/users/WyriHaximus/following{/other_user}","gists_url":"https://api.github.com/users/WyriHaximus/gists{/gist_id}","starred_url":"https://api.github.com/users/WyriHaximus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WyriHaximus/subscriptions","organizations_url":"https://api.github.com/users/WyriHaximus/orgs","repos_url":"https://api.github.com/users/WyriHaximus/repos","events_url":"https://api.github.com/users/WyriHaximus/events{/privacy}","received_events_url":"https://api.github.com/users/WyriHaximus/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":0,"state":"open","created_at":"2016-03-21T20:43:50Z","updated_at":"2016-03-21T20:44:07Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/reactphp/http/pulls/41/commits","review_comments_url":"https://api.github.com/repos/reactphp/http/pulls/41/comments","review_comment_url":"https://api.github.com/repos/reactphp/http/pulls/comments{/number}","comments_url":"https://api.github.com/repos/reactphp/http/issues/41/comments","statuses_url":"https://api.github.com/repos/reactphp/http/statuses/7d75b008dafa2d639d248c800db63ae4ef96fa0d","head":{"label":"reactphp:streaming-multipart","ref":"streaming-multipart","sha":"7d75b008dafa2d639d248c800db63ae4ef96fa0d","user":{"login":"reactphp","id":1696866,"avatar_url":"https://avatars.githubusercontent.com/u/1696866?v=3","gravatar_id":"","url":"https://api.github.com/users/reactphp","html_url":"https://github.com/reactphp","followers_url":"https://api.github.com/users/reactphp/followers","following_url":"https://api.github.com/users/reactphp/following{/other_user}","gists_url":"https://api.github.com/users/reactphp/gists{/gist_id}","starred_url":"https://api.github.com/users/reactphp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/reactphp/subscriptions","organizations_url":"https://api.github.com/users/reactphp/orgs","repos_url":"https://api.github.com/users/reactphp/repos","events_url":"https://api.github.com/users/reactphp/events{/privacy}","received_events_url":"https://api.github.com/users/reactphp/received_events","type":"Organization","site_admin":false},"repo":{"id":4287609,"name":"http","full_name":"reactphp/http","owner":{"login":"reactphp","id":1696866,"avatar_url":"https://avatars.githubusercontent.com/u/1696866?v=3","gravatar_id":"","url":"https://api.github.com/users/reactphp","html_url":"https://github.com/reactphp","followers_url":"https://api.github.com/users/reactphp/followers","following_url":"https://api.github.com/users/reactphp/following{/other_user}","gists_url":"https://api.github.com/users/reactphp/gists{/gist_id}","starred_url":"https://api.github.com/users/reactphp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/reactphp/subscriptions","organizations_url":"https://api.github.com/users/reactphp/orgs","repos_url":"https://api.github.com/users/reactphp/repos","events_url":"https://api.github.com/users/reactphp/events{/privacy}","received_events_url":"https://api.github.com/users/reactphp/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/reactphp/http","description":"React HTTP server (unstable)","fork":false,"url":"https://api.github.com/repos/reactphp/http","forks_url":"https://api.github.com/repos/reactphp/http/forks","keys_url":"https://api.github.com/repos/reactphp/http/keys{/key_id}","collaborators_url":"https://api.github.com/repos/reactphp/http/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/reactphp/http/teams","hooks_url":"https://api.github.com/repos/reactphp/http/hooks","issue_events_url":"https://api.github.com/repos/reactphp/http/issues/events{/number}","events_url":"https://api.github.com/repos/reactphp/http/events","assignees_url":"https://api.github.com/repos/reactphp/http/assignees{/user}","branches_url":"https://api.github.com/repos/reactphp/http/branches{/branch}","tags_url":"https://api.github.com/repos/reactphp/http/tags","blobs_url":"https://api.github.com/repos/reactphp/http/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/reactphp/http/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/reactphp/http/git/refs{/sha}","trees_url":"https://api.github.com/repos/reactphp/http/git/trees{/sha}","statuses_url":"https://api.github.com/repos/reactphp/http/statuses/{sha}","languages_url":"https://api.github.com/repos/reactphp/http/languages","stargazers_url":"https://api.github.com/repos/reactphp/http/stargazers","contributors_url":"https://api.github.com/repos/reactphp/http/contributors","subscribers_url":"https://api.github.com/repos/reactphp/http/subscribers","subscription_url":"https://api.github.com/repos/reactphp/http/subscription","commits_url":"https://api.github.com/repos/reactphp/http/commits{/sha}","git_commits_url":"https://api.github.com/repos/reactphp/http/git/commits{/sha}","comments_url":"https://api.github.com/repos/reactphp/http/comments{/number}","issue_comment_url":"https://api.github.com/repos/reactphp/http/issues/comments{/number}","contents_url":"https://api.github.com/repos/reactphp/http/contents/{+path}","compare_url":"https://api.github.com/repos/reactphp/http/compare/{base}...{head}","merges_url":"https://api.github.com/repos/reactphp/http/merges","archive_url":"https://api.github.com/repos/reactphp/http/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/reactphp/http/downloads","issues_url":"https://api.github.com/repos/reactphp/http/issues{/number}","pulls_url":"https://api.github.com/repos/reactphp/http/pulls{/number}","milestones_url":"https://api.github.com/repos/reactphp/http/milestones{/number}","notifications_url":"https://api.github.com/repos/reactphp/http/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/reactphp/http/labels{/name}","releases_url":"https://api.github.com/repos/reactphp/http/releases{/id}","deployments_url":"https://api.github.com/repos/reactphp/http/deployments","created_at":"2012-05-10T17:31:28Z","updated_at":"2016-06-28T14:35:20Z","pushed_at":"2016-07-07T15:16:54Z","git_url":"git://github.com/reactphp/http.git","ssh_url":"git@github.com:reactphp/http.git","clone_url":"https://github.com/reactphp/http.git","svn_url":"https://github.com/reactphp/http","homepage":"","size":223,"stargazers_count":78,"watchers_count":78,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":41,"mirror_url":null,"open_issues_count":26,"forks":41,"open_issues":26,"watchers":78,"default_branch":"master"}},"base":{"label":"reactphp:master","ref":"master","sha":"cd15204bd15d106d7832c680e4fb0ca0ce2f5e30","user":{"login":"reactphp","id":1696866,"avatar_url":"https://avatars.githubusercontent.com/u/1696866?v=3","gravatar_id":"","url":"https://api.github.com/users/reactphp","html_url":"https://github.com/reactphp","followers_url":"https://api.github.com/users/reactphp/followers","following_url":"https://api.github.com/users/reactphp/following{/other_user}","gists_url":"https://api.github.com/users/reactphp/gists{/gist_id}","starred_url":"https://api.github.com/users/reactphp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/reactphp/subscriptions","organizations_url":"https://api.github.com/users/reactphp/orgs","repos_url":"https://api.github.com/users/reactphp/repos","events_url":"https://api.github.com/users/reactphp/events{/privacy}","received_events_url":"https://api.github.com/users/reactphp/received_events","type":"Organization","site_admin":false},"repo":{"id":4287609,"name":"http","full_name":"reactphp/http","owner":{"login":"reactphp","id":1696866,"avatar_url":"https://avatars.githubusercontent.com/u/1696866?v=3","gravatar_id":"","url":"https://api.github.com/users/reactphp","html_url":"https://github.com/reactphp","followers_url":"https://api.github.com/users/reactphp/followers","following_url":"https://api.github.com/users/reactphp/following{/other_user}","gists_url":"https://api.github.com/users/reactphp/gists{/gist_id}","starred_url":"https://api.github.com/users/reactphp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/reactphp/subscriptions","organizations_url":"https://api.github.com/users/reactphp/orgs","repos_url":"https://api.github.com/users/reactphp/repos","events_url":"https://api.github.com/users/reactphp/events{/privacy}","received_events_url":"https://api.github.com/users/reactphp/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/reactphp/http","description":"React HTTP server (unstable)","fork":false,"url":"https://api.github.com/repos/reactphp/http","forks_url":"https://api.github.com/repos/reactphp/http/forks","keys_url":"https://api.github.com/repos/reactphp/http/keys{/key_id}","collaborators_url":"https://api.github.com/repos/reactphp/http/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/reactphp/http/teams","hooks_url":"https://api.github.com/repos/reactphp/http/hooks","issue_events_url":"https://api.github.com/repos/reactphp/http/issues/events{/number}","events_url":"https://api.github.com/repos/reactphp/http/events","assignees_url":"https://api.github.com/repos/reactphp/http/assignees{/user}","branches_url":"https://api.github.com/repos/reactphp/http/branches{/branch}","tags_url":"https://api.github.com/repos/reactphp/http/tags","blobs_url":"https://api.github.com/repos/reactphp/http/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/reactphp/http/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/reactphp/http/git/refs{/sha}","trees_url":"https://api.github.com/repos/reactphp/http/git/trees{/sha}","statuses_url":"https://api.github.com/repos/reactphp/http/statuses/{sha}","languages_url":"https://api.github.com/repos/reactphp/http/languages","stargazers_url":"https://api.github.com/repos/reactphp/http/stargazers","contributors_url":"https://api.github.com/repos/reactphp/http/contributors","subscribers_url":"https://api.github.com/repos/reactphp/http/subscribers","subscription_url":"https://api.github.com/repos/reactphp/http/subscription","commits_url":"https://api.github.com/repos/reactphp/http/commits{/sha}","git_commits_url":"https://api.github.com/repos/reactphp/http/git/commits{/sha}","comments_url":"https://api.github.com/repos/reactphp/http/comments{/number}","issue_comment_url":"https://api.github.com/repos/reactphp/http/issues/comments{/number}","contents_url":"https://api.github.com/repos/reactphp/http/contents/{+path}","compare_url":"https://api.github.com/repos/reactphp/http/compare/{base}...{head}","merges_url":"https://api.github.com/repos/reactphp/http/merges","archive_url":"https://api.github.com/repos/reactphp/http/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/reactphp/http/downloads","issues_url":"https://api.github.com/repos/reactphp/http/issues{/number}","pulls_url":"https://api.github.com/repos/reactphp/http/pulls{/number}","milestones_url":"https://api.github.com/repos/reactphp/http/milestones{/number}","notifications_url":"https://api.github.com/repos/reactphp/http/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/reactphp/http/labels{/name}","releases_url":"https://api.github.com/repos/reactphp/http/releases{/id}","deployments_url":"https://api.github.com/repos/reactphp/http/deployments","created_at":"2012-05-10T17:31:28Z","updated_at":"2016-06-28T14:35:20Z","pushed_at":"2016-07-07T15:16:54Z","git_url":"git://github.com/reactphp/http.git","ssh_url":"git@github.com:reactphp/http.git","clone_url":"https://github.com/reactphp/http.git","svn_url":"https://github.com/reactphp/http","homepage":"","size":223,"stargazers_count":78,"watchers_count":78,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":41,"mirror_url":null,"open_issues_count":26,"forks":41,"open_issues":26,"watchers":78,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/reactphp/http/pulls/41"},"html":{"href":"https://github.com/reactphp/http/pull/41"},"issue":{"href":"https://api.github.com/repos/reactphp/http/issues/41"},"comments":{"href":"https://api.github.com/repos/reactphp/http/issues/41/comments"},"review_comments":{"href":"https://api.github.com/repos/reactphp/http/pulls/41/comments"},"review_comment":{"href":"https://api.github.com/repos/reactphp/http/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/reactphp/http/pulls/41/commits"},"statuses":{"href":"https://api.github.com/repos/reactphp/http/statuses/7d75b008dafa2d639d248c800db63ae4ef96fa0d"}}}}
{"actor":{"display_login":"clue"}}