{"action":"created","comment":{"url":"https://api.github.com/repos/Sonarr/Sonarr/pulls/comments/29112966","id":29112966,"diff_hunk":"@@ -0,0 +1,129 @@\n+﻿using System;\n+using System.Collections.Generic;\n+using System.Net;\n+using FluentValidation.Results;\n+using NLog;\n+using NzbDrone.Common.Http;\n+using NzbDrone.Core.Configuration;\n+using NzbDrone.Core.Indexers.Exceptions;\n+using NzbDrone.Core.Parser;\n+using NzbDrone.Core.Parser.Model;\n+\n+namespace NzbDrone.Core.Indexers.TorrentRssIndexer\n+{\n+    public class TorrentRssIndexer : HttpIndexerBase<TorrentRssIndexerSettings>\n+    {\n+        public override DownloadProtocol Protocol { get { return DownloadProtocol.Torrent; } }\n+        public override Boolean SupportsSearch { get { return false; } }\n+        public override Int32 PageSize { get { return 0; } }\n+\n+        public TorrentRssIndexer(IHttpClient httpClient, IConfigService configService, IParsingService parsingService, Logger logger)\n+            : base(httpClient, configService, parsingService, logger)\n+        {\n+\n+        }\n+\n+        public override IIndexerRequestGenerator GetRequestGenerator()\n+        {\n+            return new TorrentRssIndexerRequestGenerator() { Settings = Settings };\n+        }\n+\n+        public override IParseIndexerResponse GetParser()\n+        {\n+            var factory = new TorrentRssParserFactory();\n+            return factory.GetParser(Settings, FetchIndexerResponse);\n+        }\n+\n+        protected override void Test(List<ValidationFailure> failures)\n+        {\n+            try\n+            {\n+                var parser = this.GetParser();\n+                if (parser == null)\n+                {\n+                    throw new Exception(\"Could not parse feed. See log for details.\");\n+                }\n+            }\n+            catch (Exception)\n+            {\n+                failures.Add(new ValidationFailure(\"\", \"Feed cannot be parsed or is invalid. See log for details.\"));\n+            }\n+            \n+            base.Test(failures);\n+        }\n+\n+        protected override IList<ReleaseInfo> FetchReleases(IList<IEnumerable<IndexerRequest>> pageableRequests)","path":"src/NzbDrone.Core/Indexers/TorrentRssIndexer/TorrentRssIndexer.cs","position":55,"original_position":55,"commit_id":"4deb4914bfce8079abded892da3a59fb4217fe40","original_commit_id":"4deb4914bfce8079abded892da3a59fb4217fe40","user":{"login":"Taloth","id":6383890,"avatar_url":"https://avatars.githubusercontent.com/u/6383890?v=3","gravatar_id":"","url":"https://api.github.com/users/Taloth","html_url":"https://github.com/Taloth","followers_url":"https://api.github.com/users/Taloth/followers","following_url":"https://api.github.com/users/Taloth/following{/other_user}","gists_url":"https://api.github.com/users/Taloth/gists{/gist_id}","starred_url":"https://api.github.com/users/Taloth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Taloth/subscriptions","organizations_url":"https://api.github.com/users/Taloth/orgs","repos_url":"https://api.github.com/users/Taloth/repos","events_url":"https://api.github.com/users/Taloth/events{/privacy}","received_events_url":"https://api.github.com/users/Taloth/received_events","type":"User","site_admin":false},"body":"What's the difference with the base class implementation?","created_at":"2015-04-26T19:34:21Z","updated_at":"2015-04-26T19:34:21Z","html_url":"https://github.com/Sonarr/Sonarr/pull/193#discussion_r29112966","pull_request_url":"https://api.github.com/repos/Sonarr/Sonarr/pulls/193","_links":{"self":{"href":"https://api.github.com/repos/Sonarr/Sonarr/pulls/comments/29112966"},"html":{"href":"https://github.com/Sonarr/Sonarr/pull/193#discussion_r29112966"},"pull_request":{"href":"https://api.github.com/repos/Sonarr/Sonarr/pulls/193"}}},"pull_request":{"url":"https://api.github.com/repos/Sonarr/Sonarr/pulls/193","id":29157822,"html_url":"https://github.com/Sonarr/Sonarr/pull/193","diff_url":"https://github.com/Sonarr/Sonarr/pull/193.diff","patch_url":"https://github.com/Sonarr/Sonarr/pull/193.patch","issue_url":"https://api.github.com/repos/Sonarr/Sonarr/issues/193","number":193,"state":"open","locked":false,"title":"Add generic TorrentRssIndexer support","user":{"login":"MichelZ","id":1040252,"avatar_url":"https://avatars.githubusercontent.com/u/1040252?v=3","gravatar_id":"","url":"https://api.github.com/users/MichelZ","html_url":"https://github.com/MichelZ","followers_url":"https://api.github.com/users/MichelZ/followers","following_url":"https://api.github.com/users/MichelZ/following{/other_user}","gists_url":"https://api.github.com/users/MichelZ/gists{/gist_id}","starred_url":"https://api.github.com/users/MichelZ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichelZ/subscriptions","organizations_url":"https://api.github.com/users/MichelZ/orgs","repos_url":"https://api.github.com/users/MichelZ/repos","events_url":"https://api.github.com/users/MichelZ/events{/privacy}","received_events_url":"https://api.github.com/users/MichelZ/received_events","type":"User","site_admin":false},"body":"Add support for generic RSS feeds. Parses the feed and tests if it is\r\nEZTV compatible, or if it has all required fields for the generic\r\nTorrentRssParser\r\n\r\nPlease keep the comments coming... I'm not yet experienced with Sonarr and I'm probably doing some stuff sub-optimal :) But it's a start.","created_at":"2015-02-12T07:24:56Z","updated_at":"2015-04-26T19:34:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"97791ab26cd6ac7b8f9529bbd4a989b6a673d033","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/Sonarr/Sonarr/pulls/193/commits","review_comments_url":"https://api.github.com/repos/Sonarr/Sonarr/pulls/193/comments","review_comment_url":"https://api.github.com/repos/Sonarr/Sonarr/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Sonarr/Sonarr/issues/193/comments","statuses_url":"https://api.github.com/repos/Sonarr/Sonarr/statuses/4deb4914bfce8079abded892da3a59fb4217fe40","head":{"label":"MichelZ:TorrentRssIndexer","ref":"TorrentRssIndexer","sha":"4deb4914bfce8079abded892da3a59fb4217fe40","user":{"login":"MichelZ","id":1040252,"avatar_url":"https://avatars.githubusercontent.com/u/1040252?v=3","gravatar_id":"","url":"https://api.github.com/users/MichelZ","html_url":"https://github.com/MichelZ","followers_url":"https://api.github.com/users/MichelZ/followers","following_url":"https://api.github.com/users/MichelZ/following{/other_user}","gists_url":"https://api.github.com/users/MichelZ/gists{/gist_id}","starred_url":"https://api.github.com/users/MichelZ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichelZ/subscriptions","organizations_url":"https://api.github.com/users/MichelZ/orgs","repos_url":"https://api.github.com/users/MichelZ/repos","events_url":"https://api.github.com/users/MichelZ/events{/privacy}","received_events_url":"https://api.github.com/users/MichelZ/received_events","type":"User","site_admin":false},"repo":{"id":30253964,"name":"Sonarr","full_name":"MichelZ/Sonarr","owner":{"login":"MichelZ","id":1040252,"avatar_url":"https://avatars.githubusercontent.com/u/1040252?v=3","gravatar_id":"","url":"https://api.github.com/users/MichelZ","html_url":"https://github.com/MichelZ","followers_url":"https://api.github.com/users/MichelZ/followers","following_url":"https://api.github.com/users/MichelZ/following{/other_user}","gists_url":"https://api.github.com/users/MichelZ/gists{/gist_id}","starred_url":"https://api.github.com/users/MichelZ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MichelZ/subscriptions","organizations_url":"https://api.github.com/users/MichelZ/orgs","repos_url":"https://api.github.com/users/MichelZ/repos","events_url":"https://api.github.com/users/MichelZ/events{/privacy}","received_events_url":"https://api.github.com/users/MichelZ/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/MichelZ/Sonarr","description":"Smart PVR for newsgroup and bittorrent users.","fork":true,"url":"https://api.github.com/repos/MichelZ/Sonarr","forks_url":"https://api.github.com/repos/MichelZ/Sonarr/forks","keys_url":"https://api.github.com/repos/MichelZ/Sonarr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/MichelZ/Sonarr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/MichelZ/Sonarr/teams","hooks_url":"https://api.github.com/repos/MichelZ/Sonarr/hooks","issue_events_url":"https://api.github.com/repos/MichelZ/Sonarr/issues/events{/number}","events_url":"https://api.github.com/repos/MichelZ/Sonarr/events","assignees_url":"https://api.github.com/repos/MichelZ/Sonarr/assignees{/user}","branches_url":"https://api.github.com/repos/MichelZ/Sonarr/branches{/branch}","tags_url":"https://api.github.com/repos/MichelZ/Sonarr/tags","blobs_url":"https://api.github.com/repos/MichelZ/Sonarr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/MichelZ/Sonarr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/MichelZ/Sonarr/git/refs{/sha}","trees_url":"https://api.github.com/repos/MichelZ/Sonarr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/MichelZ/Sonarr/statuses/{sha}","languages_url":"https://api.github.com/repos/MichelZ/Sonarr/languages","stargazers_url":"https://api.github.com/repos/MichelZ/Sonarr/stargazers","contributors_url":"https://api.github.com/repos/MichelZ/Sonarr/contributors","subscribers_url":"https://api.github.com/repos/MichelZ/Sonarr/subscribers","subscription_url":"https://api.github.com/repos/MichelZ/Sonarr/subscription","commits_url":"https://api.github.com/repos/MichelZ/Sonarr/commits{/sha}","git_commits_url":"https://api.github.com/repos/MichelZ/Sonarr/git/commits{/sha}","comments_url":"https://api.github.com/repos/MichelZ/Sonarr/comments{/number}","issue_comment_url":"https://api.github.com/repos/MichelZ/Sonarr/issues/comments{/number}","contents_url":"https://api.github.com/repos/MichelZ/Sonarr/contents/{+path}","compare_url":"https://api.github.com/repos/MichelZ/Sonarr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/MichelZ/Sonarr/merges","archive_url":"https://api.github.com/repos/MichelZ/Sonarr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/MichelZ/Sonarr/downloads","issues_url":"https://api.github.com/repos/MichelZ/Sonarr/issues{/number}","pulls_url":"https://api.github.com/repos/MichelZ/Sonarr/pulls{/number}","milestones_url":"https://api.github.com/repos/MichelZ/Sonarr/milestones{/number}","notifications_url":"https://api.github.com/repos/MichelZ/Sonarr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/MichelZ/Sonarr/labels{/name}","releases_url":"https://api.github.com/repos/MichelZ/Sonarr/releases{/id}","created_at":"2015-02-03T17:01:25Z","updated_at":"2015-04-26T09:03:11Z","pushed_at":"2015-04-26T18:40:16Z","git_url":"git://github.com/MichelZ/Sonarr.git","ssh_url":"git@github.com:MichelZ/Sonarr.git","clone_url":"https://github.com/MichelZ/Sonarr.git","svn_url":"https://github.com/MichelZ/Sonarr","homepage":"https://sonarr.tv","size":191650,"stargazers_count":0,"watchers_count":0,"language":"C#","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":0,"default_branch":"develop"}},"base":{"label":"Sonarr:develop","ref":"develop","sha":"ecd941a6e50b77690931385a6e4ad29ab7302e19","user":{"login":"Sonarr","id":1082903,"avatar_url":"https://avatars.githubusercontent.com/u/1082903?v=3","gravatar_id":"","url":"https://api.github.com/users/Sonarr","html_url":"https://github.com/Sonarr","followers_url":"https://api.github.com/users/Sonarr/followers","following_url":"https://api.github.com/users/Sonarr/following{/other_user}","gists_url":"https://api.github.com/users/Sonarr/gists{/gist_id}","starred_url":"https://api.github.com/users/Sonarr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sonarr/subscriptions","organizations_url":"https://api.github.com/users/Sonarr/orgs","repos_url":"https://api.github.com/users/Sonarr/repos","events_url":"https://api.github.com/users/Sonarr/events{/privacy}","received_events_url":"https://api.github.com/users/Sonarr/received_events","type":"Organization","site_admin":false},"repo":{"id":2465723,"name":"Sonarr","full_name":"Sonarr/Sonarr","owner":{"login":"Sonarr","id":1082903,"avatar_url":"https://avatars.githubusercontent.com/u/1082903?v=3","gravatar_id":"","url":"https://api.github.com/users/Sonarr","html_url":"https://github.com/Sonarr","followers_url":"https://api.github.com/users/Sonarr/followers","following_url":"https://api.github.com/users/Sonarr/following{/other_user}","gists_url":"https://api.github.com/users/Sonarr/gists{/gist_id}","starred_url":"https://api.github.com/users/Sonarr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sonarr/subscriptions","organizations_url":"https://api.github.com/users/Sonarr/orgs","repos_url":"https://api.github.com/users/Sonarr/repos","events_url":"https://api.github.com/users/Sonarr/events{/privacy}","received_events_url":"https://api.github.com/users/Sonarr/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Sonarr/Sonarr","description":"Smart PVR for newsgroup and bittorrent users.","fork":false,"url":"https://api.github.com/repos/Sonarr/Sonarr","forks_url":"https://api.github.com/repos/Sonarr/Sonarr/forks","keys_url":"https://api.github.com/repos/Sonarr/Sonarr/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Sonarr/Sonarr/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Sonarr/Sonarr/teams","hooks_url":"https://api.github.com/repos/Sonarr/Sonarr/hooks","issue_events_url":"https://api.github.com/repos/Sonarr/Sonarr/issues/events{/number}","events_url":"https://api.github.com/repos/Sonarr/Sonarr/events","assignees_url":"https://api.github.com/repos/Sonarr/Sonarr/assignees{/user}","branches_url":"https://api.github.com/repos/Sonarr/Sonarr/branches{/branch}","tags_url":"https://api.github.com/repos/Sonarr/Sonarr/tags","blobs_url":"https://api.github.com/repos/Sonarr/Sonarr/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Sonarr/Sonarr/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Sonarr/Sonarr/git/refs{/sha}","trees_url":"https://api.github.com/repos/Sonarr/Sonarr/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Sonarr/Sonarr/statuses/{sha}","languages_url":"https://api.github.com/repos/Sonarr/Sonarr/languages","stargazers_url":"https://api.github.com/repos/Sonarr/Sonarr/stargazers","contributors_url":"https://api.github.com/repos/Sonarr/Sonarr/contributors","subscribers_url":"https://api.github.com/repos/Sonarr/Sonarr/subscribers","subscription_url":"https://api.github.com/repos/Sonarr/Sonarr/subscription","commits_url":"https://api.github.com/repos/Sonarr/Sonarr/commits{/sha}","git_commits_url":"https://api.github.com/repos/Sonarr/Sonarr/git/commits{/sha}","comments_url":"https://api.github.com/repos/Sonarr/Sonarr/comments{/number}","issue_comment_url":"https://api.github.com/repos/Sonarr/Sonarr/issues/comments{/number}","contents_url":"https://api.github.com/repos/Sonarr/Sonarr/contents/{+path}","compare_url":"https://api.github.com/repos/Sonarr/Sonarr/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Sonarr/Sonarr/merges","archive_url":"https://api.github.com/repos/Sonarr/Sonarr/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Sonarr/Sonarr/downloads","issues_url":"https://api.github.com/repos/Sonarr/Sonarr/issues{/number}","pulls_url":"https://api.github.com/repos/Sonarr/Sonarr/pulls{/number}","milestones_url":"https://api.github.com/repos/Sonarr/Sonarr/milestones{/number}","notifications_url":"https://api.github.com/repos/Sonarr/Sonarr/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Sonarr/Sonarr/labels{/name}","releases_url":"https://api.github.com/repos/Sonarr/Sonarr/releases{/id}","created_at":"2011-09-27T05:57:16Z","updated_at":"2015-04-26T19:10:25Z","pushed_at":"2015-04-26T09:03:11Z","git_url":"git://github.com/Sonarr/Sonarr.git","ssh_url":"git@github.com:Sonarr/Sonarr.git","clone_url":"https://github.com/Sonarr/Sonarr.git","svn_url":"https://github.com/Sonarr/Sonarr","homepage":"https://sonarr.tv","size":218556,"stargazers_count":577,"watchers_count":577,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":173,"mirror_url":null,"open_issues_count":16,"forks":173,"open_issues":16,"watchers":577,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/Sonarr/Sonarr/pulls/193"},"html":{"href":"https://github.com/Sonarr/Sonarr/pull/193"},"issue":{"href":"https://api.github.com/repos/Sonarr/Sonarr/issues/193"},"comments":{"href":"https://api.github.com/repos/Sonarr/Sonarr/issues/193/comments"},"review_comments":{"href":"https://api.github.com/repos/Sonarr/Sonarr/pulls/193/comments"},"review_comment":{"href":"https://api.github.com/repos/Sonarr/Sonarr/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Sonarr/Sonarr/pulls/193/commits"},"statuses":{"href":"https://api.github.com/repos/Sonarr/Sonarr/statuses/4deb4914bfce8079abded892da3a59fb4217fe40"}}}}