{"action":"opened","pull_request":{"review_comments":0,"state":"open","created_at":"2011-11-28T20:44:07Z","patch_url":"https://github.com/Shopify/batman/pull/259.patch","updated_at":"2011-11-28T20:44:07Z","changed_files":7,"_links":{"review_comments":{"href":"https://api.github.com/repos/Shopify/batman/pulls/259/comments"},"comments":{"href":"https://api.github.com/repos/Shopify/batman/issues/259/comments"},"html":{"href":"https://github.com/Shopify/batman/pull/259"},"self":{"href":"https://api.github.com/repos/Shopify/batman/pulls/259"}},"user":{"gravatar_id":"a4f464714080f787b71aa3b4eaeef43f","id":158950,"url":"https://api.github.com/users/hornairs","avatar_url":"https://secure.gravatar.com/avatar/a4f464714080f787b71aa3b4eaeef43f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","login":"hornairs"},"comments":0,"issue_url":"https://github.com/Shopify/batman/issues/259","body":"\r\n - Logic which is shared between different actions on a storage adapter is put in filters.\r\n - Filters transform a data object's attributes and then call next(), optionally with an error, in the future.\r\n - The bodies of the read, create, update, etc functions on the storage adapters are what is unique to the core of just that action, and nothing more.\r\n - Filters can now be asynchronous.\r\n - Arbitrary objects can be passed around from filter to filter instead of relying on the variable arguments used in the old system.\r\n - Options creation is now much more extensible via subclasses.","merged":false,"deletions":797,"commits":5,"mergeable":null,"number":259,"id":535023,"base":{"user":{"gravatar_id":"c5c29e455b8c4f05112abbc01af58a29","id":8085,"url":"https://api.github.com/users/Shopify","avatar_url":"https://secure.gravatar.com/avatar/c5c29e455b8c4f05112abbc01af58a29?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-orgs.png","login":"Shopify"},"repo":{"created_at":"2011-01-22T18:27:42Z","pushed_at":"2011-11-28T20:29:11Z","clone_url":"https://github.com/Shopify/batman.git","updated_at":"2011-11-28T20:29:11Z","private":false,"svn_url":"https://svn.github.com/Shopify/batman","name":"batman","watchers":660,"master_branch":null,"language":"CoffeeScript","forks":47,"owner":{"gravatar_id":"c5c29e455b8c4f05112abbc01af58a29","id":8085,"url":"https://api.github.com/users/Shopify","avatar_url":"https://secure.gravatar.com/avatar/c5c29e455b8c4f05112abbc01af58a29?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-orgs.png","login":"Shopify"},"id":1282541,"homepage":"batmanjs.org","description":"Fighting Crime and Kicking Apps","git_url":"git://github.com/Shopify/batman.git","html_url":"https://github.com/Shopify/batman","size":908,"fork":false,"url":"https://api.github.com/repos/Shopify/batman","open_issues":25,"ssh_url":"git@github.com:Shopify/batman.git"},"sha":"8e56fd02d9d0a42dd995fbf3d4275b23ac919ea3","ref":"master","label":"Shopify:master"},"additions":776,"merged_by":null,"title":"Storage adapter refactor","head":{"user":{"gravatar_id":"a4f464714080f787b71aa3b4eaeef43f","id":158950,"url":"https://api.github.com/users/hornairs","avatar_url":"https://secure.gravatar.com/avatar/a4f464714080f787b71aa3b4eaeef43f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","login":"hornairs"},"repo":{"created_at":"2011-05-04T00:31:23Z","pushed_at":"2011-11-28T20:43:35Z","clone_url":"https://github.com/hornairs/batman.git","updated_at":"2011-11-28T20:43:35Z","private":false,"svn_url":"https://svn.github.com/hornairs/batman","name":"batman","watchers":1,"master_branch":null,"language":"CoffeeScript","forks":0,"owner":{"gravatar_id":"a4f464714080f787b71aa3b4eaeef43f","id":158950,"url":"https://api.github.com/users/hornairs","avatar_url":"https://secure.gravatar.com/avatar/a4f464714080f787b71aa3b4eaeef43f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","login":"hornairs"},"id":1699006,"homepage":"batmanjs.org","description":"Fighting Crime and Kicking Apps","git_url":"git://github.com/hornairs/batman.git","html_url":"https://github.com/hornairs/batman","size":276,"fork":true,"url":"https://api.github.com/repos/hornairs/batman","open_issues":0,"ssh_url":"git@github.com:hornairs/batman.git"},"sha":"ebffd6b0778c175579d201247ff7d9dcad9d6fc5","ref":"storage_adapter_refactor","label":"hornairs:storage_adapter_refactor"},"closed_at":null,"html_url":"https://github.com/Shopify/batman/pull/259","url":"https://api.github.com/repos/Shopify/batman/pulls/259","diff_url":"https://github.com/Shopify/batman/pull/259.diff","merged_at":null},"number":259}