{"action":"created","issue":{"url":"https://api.github.com/repos/hypothesis/h/issues/2456","labels_url":"https://api.github.com/repos/hypothesis/h/issues/2456/labels{/name}","comments_url":"https://api.github.com/repos/hypothesis/h/issues/2456/comments","events_url":"https://api.github.com/repos/hypothesis/h/issues/2456/events","html_url":"https://github.com/hypothesis/h/pull/2456","id":101958356,"number":2456,"title":"Add an RSS feed of /stream","user":{"login":"seanh","id":22498,"avatar_url":"https://avatars.githubusercontent.com/u/22498?v=3","gravatar_id":"","url":"https://api.github.com/users/seanh","html_url":"https://github.com/seanh","followers_url":"https://api.github.com/users/seanh/followers","following_url":"https://api.github.com/users/seanh/following{/other_user}","gists_url":"https://api.github.com/users/seanh/gists{/gist_id}","starred_url":"https://api.github.com/users/seanh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/seanh/subscriptions","organizations_url":"https://api.github.com/users/seanh/orgs","repos_url":"https://api.github.com/users/seanh/repos","events_url":"https://api.github.com/users/seanh/events{/privacy}","received_events_url":"https://api.github.com/users/seanh/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/hypothesis/h/labels/WIP","name":"WIP","color":"bfd4f2"}],"state":"open","locked":false,"assignee":{"login":"seanh","id":22498,"avatar_url":"https://avatars.githubusercontent.com/u/22498?v=3","gravatar_id":"","url":"https://api.github.com/users/seanh","html_url":"https://github.com/seanh","followers_url":"https://api.github.com/users/seanh/followers","following_url":"https://api.github.com/users/seanh/following{/other_user}","gists_url":"https://api.github.com/users/seanh/gists{/gist_id}","starred_url":"https://api.github.com/users/seanh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/seanh/subscriptions","organizations_url":"https://api.github.com/users/seanh/orgs","repos_url":"https://api.github.com/users/seanh/repos","events_url":"https://api.github.com/users/seanh/events{/privacy}","received_events_url":"https://api.github.com/users/seanh/received_events","type":"User","site_admin":false},"milestone":null,"comments":8,"created_at":"2015-08-19T17:51:53Z","updated_at":"2015-09-07T12:18:11Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/hypothesis/h/pulls/2456","html_url":"https://github.com/hypothesis/h/pull/2456","diff_url":"https://github.com/hypothesis/h/pull/2456.diff","patch_url":"https://github.com/hypothesis/h/pull/2456.patch"},"body":"Gonna factor out `h.api_client` (which is only used by the Atom feed, afaik) and then add an RSS feed alongside the Atom feed."},"comment":{"url":"https://api.github.com/repos/hypothesis/h/issues/comments/138282034","html_url":"https://github.com/hypothesis/h/pull/2456#issuecomment-138282034","issue_url":"https://api.github.com/repos/hypothesis/h/issues/2456","id":138282034,"user":{"login":"seanh","id":22498,"avatar_url":"https://avatars.githubusercontent.com/u/22498?v=3","gravatar_id":"","url":"https://api.github.com/users/seanh","html_url":"https://github.com/seanh","followers_url":"https://api.github.com/users/seanh/followers","following_url":"https://api.github.com/users/seanh/following{/other_user}","gists_url":"https://api.github.com/users/seanh/gists{/gist_id}","starred_url":"https://api.github.com/users/seanh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/seanh/subscriptions","organizations_url":"https://api.github.com/users/seanh/orgs","repos_url":"https://api.github.com/users/seanh/repos","events_url":"https://api.github.com/users/seanh/events{/privacy}","received_events_url":"https://api.github.com/users/seanh/received_events","type":"User","site_admin":false},"created_at":"2015-09-07T12:18:11Z","updated_at":"2015-09-07T12:18:11Z","body":"So we still have view functions for each RSS and Atom feed here, they just use Pyramid view config's wrapper argument instead of wrapping the search API view manually. I don't think there's any way to cut this down further, without giving up on the Atom and RSS renderers as generic annotations - > Atom|RSS renderers. What the view wrapper functions do essentially is get values specific to these particular RSS and Atom feeds from config and routing and pass them to the RSS and Atom renderers. I don't see any other way for `config.add_view()`to do this other than using `wrapper`, nor do I want to move getting those values into the Atom and RSS code itself because that would make the code specific to these particular feeds, not generic,"}}