{"action":"created","comment":{"url":"https://api.github.com/repos/RESTful-Drupal/restful/pulls/comments/23866096","id":23866096,"diff_hunk":"@@ -37,28 +59,97 @@ public function get($key) {\n     if (array_key_exists($key, $this->values)) {\n       return $this->values[$key];\n     }\n-    return NULL;\n+    // Return a NULL object on which you can still call the HttpHeaderInterface\n+    // methods.\n+    return HttpHeaderNull::create(NULL, NULL);","path":"src/http/HttpHeaderBag.php","position":57,"original_position":57,"commit_id":"bca9df9fe626c911a61450c7758e1ec3b2e24dd8","original_commit_id":"bca9df9fe626c911a61450c7758e1ec3b2e24dd8","user":{"login":"mateu-aguilo-bosch","id":1140906,"avatar_url":"https://avatars.githubusercontent.com/u/1140906?v=3","gravatar_id":"","url":"https://api.github.com/users/mateu-aguilo-bosch","html_url":"https://github.com/mateu-aguilo-bosch","followers_url":"https://api.github.com/users/mateu-aguilo-bosch/followers","following_url":"https://api.github.com/users/mateu-aguilo-bosch/following{/other_user}","gists_url":"https://api.github.com/users/mateu-aguilo-bosch/gists{/gist_id}","starred_url":"https://api.github.com/users/mateu-aguilo-bosch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mateu-aguilo-bosch/subscriptions","organizations_url":"https://api.github.com/users/mateu-aguilo-bosch/orgs","repos_url":"https://api.github.com/users/mateu-aguilo-bosch/repos","events_url":"https://api.github.com/users/mateu-aguilo-bosch/events{/privacy}","received_events_url":"https://api.github.com/users/mateu-aguilo-bosch/received_events","type":"User","site_admin":false},"body":"This is actually kind of cool (from how I see it). It will allow us doing things like:\r\n\r\n```php\r\nif ($value = $headers->get('header-that-does-not-exist')->getValueString()) { … }\r\n```\r\n\r\nInstead of the more verbose (and awkard):\r\n\r\n```php\r\nif ($header = $headers->has('header-that-does-not-exist')) {\r\n  $value = $headers->get('header-that-does-not-exist')->getValueString();\r\n  …\r\n}\r\n```\r\n\r\nhttps://en.wikipedia.org/wiki/Null_Object_pattern\r\n\r\nI don't feel to attached to it if you don't like it, though.","created_at":"2015-01-30T19:33:27Z","updated_at":"2015-01-30T19:33:27Z","html_url":"https://github.com/RESTful-Drupal/restful/pull/401#discussion_r23866096","pull_request_url":"https://api.github.com/repos/RESTful-Drupal/restful/pulls/401","_links":{"self":{"href":"https://api.github.com/repos/RESTful-Drupal/restful/pulls/comments/23866096"},"html":{"href":"https://github.com/RESTful-Drupal/restful/pull/401#discussion_r23866096"},"pull_request":{"href":"https://api.github.com/repos/RESTful-Drupal/restful/pulls/401"}}},"pull_request":{"url":"https://api.github.com/repos/RESTful-Drupal/restful/pulls/401","id":28346341,"html_url":"https://github.com/RESTful-Drupal/restful/pull/401","diff_url":"https://github.com/RESTful-Drupal/restful/pull/401.diff","patch_url":"https://github.com/RESTful-Drupal/restful/pull/401.patch","issue_url":"https://api.github.com/repos/RESTful-Drupal/restful/issues/401","number":401,"state":"open","locked":false,"title":"2.x Response object.","user":{"login":"mateu-aguilo-bosch","id":1140906,"avatar_url":"https://avatars.githubusercontent.com/u/1140906?v=3","gravatar_id":"","url":"https://api.github.com/users/mateu-aguilo-bosch","html_url":"https://github.com/mateu-aguilo-bosch","followers_url":"https://api.github.com/users/mateu-aguilo-bosch/followers","following_url":"https://api.github.com/users/mateu-aguilo-bosch/following{/other_user}","gists_url":"https://api.github.com/users/mateu-aguilo-bosch/gists{/gist_id}","starred_url":"https://api.github.com/users/mateu-aguilo-bosch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mateu-aguilo-bosch/subscriptions","organizations_url":"https://api.github.com/users/mateu-aguilo-bosch/orgs","repos_url":"https://api.github.com/users/mateu-aguilo-bosch/repos","events_url":"https://api.github.com/users/mateu-aguilo-bosch/events{/privacy}","received_events_url":"https://api.github.com/users/mateu-aguilo-bosch/received_events","type":"User","site_admin":false},"body":"@amitaibu minor break through!\r\n\r\nAfter this commit you will be able to make a request for an API that that does not exits and get a fully formed and formatted error response.\r\n\r\nThis is handy to see how the `Request` + `HttpHeader…` + `RestfulManager` + `FormatterManager` + `Response`  classes interact to the life cycle of a request.","created_at":"2015-01-30T08:55:24Z","updated_at":"2015-01-30T19:33:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"28f8904679d102e880c4450af486af922c67c30d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/RESTful-Drupal/restful/pulls/401/commits","review_comments_url":"https://api.github.com/repos/RESTful-Drupal/restful/pulls/401/comments","review_comment_url":"https://api.github.com/repos/RESTful-Drupal/restful/pulls/comments/{number}","comments_url":"https://api.github.com/repos/RESTful-Drupal/restful/issues/401/comments","statuses_url":"https://api.github.com/repos/RESTful-Drupal/restful/statuses/bca9df9fe626c911a61450c7758e1ec3b2e24dd8","head":{"label":"mateu-aguilo-bosch:2.x-request-object","ref":"2.x-request-object","sha":"bca9df9fe626c911a61450c7758e1ec3b2e24dd8","user":{"login":"mateu-aguilo-bosch","id":1140906,"avatar_url":"https://avatars.githubusercontent.com/u/1140906?v=3","gravatar_id":"","url":"https://api.github.com/users/mateu-aguilo-bosch","html_url":"https://github.com/mateu-aguilo-bosch","followers_url":"https://api.github.com/users/mateu-aguilo-bosch/followers","following_url":"https://api.github.com/users/mateu-aguilo-bosch/following{/other_user}","gists_url":"https://api.github.com/users/mateu-aguilo-bosch/gists{/gist_id}","starred_url":"https://api.github.com/users/mateu-aguilo-bosch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mateu-aguilo-bosch/subscriptions","organizations_url":"https://api.github.com/users/mateu-aguilo-bosch/orgs","repos_url":"https://api.github.com/users/mateu-aguilo-bosch/repos","events_url":"https://api.github.com/users/mateu-aguilo-bosch/events{/privacy}","received_events_url":"https://api.github.com/users/mateu-aguilo-bosch/received_events","type":"User","site_admin":false},"repo":{"id":19935082,"name":"restful","full_name":"mateu-aguilo-bosch/restful","owner":{"login":"mateu-aguilo-bosch","id":1140906,"avatar_url":"https://avatars.githubusercontent.com/u/1140906?v=3","gravatar_id":"","url":"https://api.github.com/users/mateu-aguilo-bosch","html_url":"https://github.com/mateu-aguilo-bosch","followers_url":"https://api.github.com/users/mateu-aguilo-bosch/followers","following_url":"https://api.github.com/users/mateu-aguilo-bosch/following{/other_user}","gists_url":"https://api.github.com/users/mateu-aguilo-bosch/gists{/gist_id}","starred_url":"https://api.github.com/users/mateu-aguilo-bosch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mateu-aguilo-bosch/subscriptions","organizations_url":"https://api.github.com/users/mateu-aguilo-bosch/orgs","repos_url":"https://api.github.com/users/mateu-aguilo-bosch/repos","events_url":"https://api.github.com/users/mateu-aguilo-bosch/events{/privacy}","received_events_url":"https://api.github.com/users/mateu-aguilo-bosch/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mateu-aguilo-bosch/restful","description":"RESTful best practices for Drupal","fork":true,"url":"https://api.github.com/repos/mateu-aguilo-bosch/restful","forks_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/forks","keys_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/teams","hooks_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/hooks","issue_events_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/issues/events{/number}","events_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/events","assignees_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/assignees{/user}","branches_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/branches{/branch}","tags_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/tags","blobs_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/git/refs{/sha}","trees_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/statuses/{sha}","languages_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/languages","stargazers_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/stargazers","contributors_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/contributors","subscribers_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/subscribers","subscription_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/subscription","commits_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/commits{/sha}","git_commits_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/git/commits{/sha}","comments_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/comments{/number}","issue_comment_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/issues/comments/{number}","contents_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/contents/{+path}","compare_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/merges","archive_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/downloads","issues_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/issues{/number}","pulls_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/pulls{/number}","milestones_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/milestones{/number}","notifications_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/labels{/name}","releases_url":"https://api.github.com/repos/mateu-aguilo-bosch/restful/releases{/id}","created_at":"2014-05-19T08:55:09Z","updated_at":"2015-01-24T08:26:49Z","pushed_at":"2015-01-30T10:32:00Z","git_url":"git://github.com/mateu-aguilo-bosch/restful.git","ssh_url":"git@github.com:mateu-aguilo-bosch/restful.git","clone_url":"https://github.com/mateu-aguilo-bosch/restful.git","svn_url":"https://github.com/mateu-aguilo-bosch/restful","homepage":"","size":3047,"stargazers_count":1,"watchers_count":1,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"7.x-1.x"}},"base":{"label":"RESTful-Drupal:7.x-2.x","ref":"7.x-2.x","sha":"69d5418bf3356751e916b839ea3cfaf6e3e633be","user":{"login":"RESTful-Drupal","id":10175793,"avatar_url":"https://avatars.githubusercontent.com/u/10175793?v=3","gravatar_id":"","url":"https://api.github.com/users/RESTful-Drupal","html_url":"https://github.com/RESTful-Drupal","followers_url":"https://api.github.com/users/RESTful-Drupal/followers","following_url":"https://api.github.com/users/RESTful-Drupal/following{/other_user}","gists_url":"https://api.github.com/users/RESTful-Drupal/gists{/gist_id}","starred_url":"https://api.github.com/users/RESTful-Drupal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RESTful-Drupal/subscriptions","organizations_url":"https://api.github.com/users/RESTful-Drupal/orgs","repos_url":"https://api.github.com/users/RESTful-Drupal/repos","events_url":"https://api.github.com/users/RESTful-Drupal/events{/privacy}","received_events_url":"https://api.github.com/users/RESTful-Drupal/received_events","type":"Organization","site_admin":false},"repo":{"id":17918315,"name":"restful","full_name":"RESTful-Drupal/restful","owner":{"login":"RESTful-Drupal","id":10175793,"avatar_url":"https://avatars.githubusercontent.com/u/10175793?v=3","gravatar_id":"","url":"https://api.github.com/users/RESTful-Drupal","html_url":"https://github.com/RESTful-Drupal","followers_url":"https://api.github.com/users/RESTful-Drupal/followers","following_url":"https://api.github.com/users/RESTful-Drupal/following{/other_user}","gists_url":"https://api.github.com/users/RESTful-Drupal/gists{/gist_id}","starred_url":"https://api.github.com/users/RESTful-Drupal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RESTful-Drupal/subscriptions","organizations_url":"https://api.github.com/users/RESTful-Drupal/orgs","repos_url":"https://api.github.com/users/RESTful-Drupal/repos","events_url":"https://api.github.com/users/RESTful-Drupal/events{/privacy}","received_events_url":"https://api.github.com/users/RESTful-Drupal/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/RESTful-Drupal/restful","description":"RESTful best practices for Drupal","fork":false,"url":"https://api.github.com/repos/RESTful-Drupal/restful","forks_url":"https://api.github.com/repos/RESTful-Drupal/restful/forks","keys_url":"https://api.github.com/repos/RESTful-Drupal/restful/keys{/key_id}","collaborators_url":"https://api.github.com/repos/RESTful-Drupal/restful/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/RESTful-Drupal/restful/teams","hooks_url":"https://api.github.com/repos/RESTful-Drupal/restful/hooks","issue_events_url":"https://api.github.com/repos/RESTful-Drupal/restful/issues/events{/number}","events_url":"https://api.github.com/repos/RESTful-Drupal/restful/events","assignees_url":"https://api.github.com/repos/RESTful-Drupal/restful/assignees{/user}","branches_url":"https://api.github.com/repos/RESTful-Drupal/restful/branches{/branch}","tags_url":"https://api.github.com/repos/RESTful-Drupal/restful/tags","blobs_url":"https://api.github.com/repos/RESTful-Drupal/restful/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/RESTful-Drupal/restful/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/RESTful-Drupal/restful/git/refs{/sha}","trees_url":"https://api.github.com/repos/RESTful-Drupal/restful/git/trees{/sha}","statuses_url":"https://api.github.com/repos/RESTful-Drupal/restful/statuses/{sha}","languages_url":"https://api.github.com/repos/RESTful-Drupal/restful/languages","stargazers_url":"https://api.github.com/repos/RESTful-Drupal/restful/stargazers","contributors_url":"https://api.github.com/repos/RESTful-Drupal/restful/contributors","subscribers_url":"https://api.github.com/repos/RESTful-Drupal/restful/subscribers","subscription_url":"https://api.github.com/repos/RESTful-Drupal/restful/subscription","commits_url":"https://api.github.com/repos/RESTful-Drupal/restful/commits{/sha}","git_commits_url":"https://api.github.com/repos/RESTful-Drupal/restful/git/commits{/sha}","comments_url":"https://api.github.com/repos/RESTful-Drupal/restful/comments{/number}","issue_comment_url":"https://api.github.com/repos/RESTful-Drupal/restful/issues/comments/{number}","contents_url":"https://api.github.com/repos/RESTful-Drupal/restful/contents/{+path}","compare_url":"https://api.github.com/repos/RESTful-Drupal/restful/compare/{base}...{head}","merges_url":"https://api.github.com/repos/RESTful-Drupal/restful/merges","archive_url":"https://api.github.com/repos/RESTful-Drupal/restful/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/RESTful-Drupal/restful/downloads","issues_url":"https://api.github.com/repos/RESTful-Drupal/restful/issues{/number}","pulls_url":"https://api.github.com/repos/RESTful-Drupal/restful/pulls{/number}","milestones_url":"https://api.github.com/repos/RESTful-Drupal/restful/milestones{/number}","notifications_url":"https://api.github.com/repos/RESTful-Drupal/restful/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/RESTful-Drupal/restful/labels{/name}","releases_url":"https://api.github.com/repos/RESTful-Drupal/restful/releases{/id}","created_at":"2014-03-19T19:58:55Z","updated_at":"2015-01-29T16:22:17Z","pushed_at":"2015-01-29T10:15:07Z","git_url":"git://github.com/RESTful-Drupal/restful.git","ssh_url":"git@github.com:RESTful-Drupal/restful.git","clone_url":"https://github.com/RESTful-Drupal/restful.git","svn_url":"https://github.com/RESTful-Drupal/restful","homepage":"","size":6404,"stargazers_count":178,"watchers_count":178,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":39,"mirror_url":null,"open_issues_count":37,"forks":39,"open_issues":37,"watchers":178,"default_branch":"7.x-1.x"}},"_links":{"self":{"href":"https://api.github.com/repos/RESTful-Drupal/restful/pulls/401"},"html":{"href":"https://github.com/RESTful-Drupal/restful/pull/401"},"issue":{"href":"https://api.github.com/repos/RESTful-Drupal/restful/issues/401"},"comments":{"href":"https://api.github.com/repos/RESTful-Drupal/restful/issues/401/comments"},"review_comments":{"href":"https://api.github.com/repos/RESTful-Drupal/restful/pulls/401/comments"},"review_comment":{"href":"https://api.github.com/repos/RESTful-Drupal/restful/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/RESTful-Drupal/restful/pulls/401/commits"},"statuses":{"href":"https://api.github.com/repos/RESTful-Drupal/restful/statuses/bca9df9fe626c911a61450c7758e1ec3b2e24dd8"}}}}