Use native HttpMethod

pull/681/head
Qstick 3 years ago
parent e04133d34a
commit 76b6b0dead

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using NLog; using NLog;
using NzbDrone.Common.Cache; using NzbDrone.Common.Cache;
@ -87,7 +88,7 @@ namespace NzbDrone.Common.Http
// 302 or 303 should default to GET on redirect even if POST on original // 302 or 303 should default to GET on redirect even if POST on original
if (response.StatusCode == HttpStatusCode.Redirect || response.StatusCode == HttpStatusCode.RedirectMethod) if (response.StatusCode == HttpStatusCode.Redirect || response.StatusCode == HttpStatusCode.RedirectMethod)
{ {
request.Method = HttpMethod.GET; request.Method = HttpMethod.Get;
request.ContentData = null; request.ContentData = null;
} }
@ -263,7 +264,7 @@ namespace NzbDrone.Common.Http
public Task<HttpResponse> GetAsync(HttpRequest request) public Task<HttpResponse> GetAsync(HttpRequest request)
{ {
request.Method = HttpMethod.GET; request.Method = HttpMethod.Get;
return ExecuteAsync(request); return ExecuteAsync(request);
} }
@ -288,7 +289,7 @@ namespace NzbDrone.Common.Http
public Task<HttpResponse> HeadAsync(HttpRequest request) public Task<HttpResponse> HeadAsync(HttpRequest request)
{ {
request.Method = HttpMethod.HEAD; request.Method = HttpMethod.Head;
return ExecuteAsync(request); return ExecuteAsync(request);
} }
@ -299,7 +300,7 @@ namespace NzbDrone.Common.Http
public Task<HttpResponse> PostAsync(HttpRequest request) public Task<HttpResponse> PostAsync(HttpRequest request)
{ {
request.Method = HttpMethod.POST; request.Method = HttpMethod.Post;
return ExecuteAsync(request); return ExecuteAsync(request);
} }

@ -1,14 +0,0 @@
namespace NzbDrone.Common.Http
{
public enum HttpMethod
{
GET,
POST,
PUT,
DELETE,
HEAD,
OPTIONS,
PATCH,
MERGE
}
}

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net; using System.Net;
using System.Net.Http;
using System.Text; using System.Text;
using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Text; using System.Text;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
@ -37,7 +38,7 @@ namespace NzbDrone.Common.Http
{ {
BaseUrl = new HttpUri(baseUrl); BaseUrl = new HttpUri(baseUrl);
ResourceUrl = string.Empty; ResourceUrl = string.Empty;
Method = HttpMethod.GET; Method = HttpMethod.Get;
Encoding = Encoding.UTF8; Encoding = Encoding.UTF8;
QueryParams = new List<KeyValuePair<string, string>>(); QueryParams = new List<KeyValuePair<string, string>>();
SuffixQueryParams = new List<KeyValuePair<string, string>>(); SuffixQueryParams = new List<KeyValuePair<string, string>>();
@ -275,7 +276,7 @@ namespace NzbDrone.Common.Http
public virtual HttpRequestBuilder Post() public virtual HttpRequestBuilder Post()
{ {
Method = HttpMethod.POST; Method = HttpMethod.Post;
return this; return this;
} }
@ -397,7 +398,7 @@ namespace NzbDrone.Common.Http
public virtual HttpRequestBuilder AddFormParameter(string key, object value) public virtual HttpRequestBuilder AddFormParameter(string key, object value)
{ {
if (Method != HttpMethod.POST) if (Method != HttpMethod.Post)
{ {
throw new NotSupportedException("HttpRequest Method must be POST to add FormParameter."); throw new NotSupportedException("HttpRequest Method must be POST to add FormParameter.");
} }
@ -413,7 +414,7 @@ namespace NzbDrone.Common.Http
public virtual HttpRequestBuilder AddFormUpload(string name, string fileName, byte[] data, string contentType = "application/octet-stream") public virtual HttpRequestBuilder AddFormUpload(string name, string fileName, byte[] data, string contentType = "application/octet-stream")
{ {
if (Method != HttpMethod.POST) if (Method != HttpMethod.Post)
{ {
throw new NotSupportedException("HttpRequest Method must be POST to add FormUpload."); throw new NotSupportedException("HttpRequest Method must be POST to add FormUpload.");
} }

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using Newtonsoft.Json; using Newtonsoft.Json;
using NzbDrone.Common.Serializer; using NzbDrone.Common.Serializer;
@ -17,14 +18,14 @@ namespace NzbDrone.Common.Http
public JsonRpcRequestBuilder(string baseUrl) public JsonRpcRequestBuilder(string baseUrl)
: base(baseUrl) : base(baseUrl)
{ {
Method = HttpMethod.POST; Method = HttpMethod.Post;
JsonParameters = new List<object>(); JsonParameters = new List<object>();
} }
public JsonRpcRequestBuilder(string baseUrl, string method, IEnumerable<object> parameters) public JsonRpcRequestBuilder(string baseUrl, string method, IEnumerable<object> parameters)
: base(baseUrl) : base(baseUrl)
{ {
Method = HttpMethod.POST; Method = HttpMethod.Post;
JsonMethod = method; JsonMethod = method;
JsonParameters = parameters.ToList(); JsonParameters = parameters.ToList();
} }

@ -1,6 +1,7 @@
using System; using System;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using FluentAssertions; using FluentAssertions;
using Moq; using Moq;
@ -34,7 +35,7 @@ namespace NzbDrone.Core.Test.IndexerTests.AvistazTests
var recentFeed = ReadAllText(@"Files/Indexers/Avistaz/recentfeed.json"); var recentFeed = ReadAllText(@"Files/Indexers/Avistaz/recentfeed.json");
Mocker.GetMock<IIndexerHttpClient>() Mocker.GetMock<IIndexerHttpClient>()
.Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.GET), Subject.Definition)) .Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.Get), Subject.Definition))
.Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader { { "Content-Type", "application/json" } }, new CookieCollection(), recentFeed))); .Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader { { "Content-Type", "application/json" } }, new CookieCollection(), recentFeed)));
var releases = (await Subject.Fetch(new MovieSearchCriteria { Categories = new int[] { 2000 } })).Releases; var releases = (await Subject.Fetch(new MovieSearchCriteria { Categories = new int[] { 2000 } })).Releases;

@ -1,6 +1,7 @@
using System; using System;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using FluentAssertions; using FluentAssertions;
using Moq; using Moq;
@ -34,7 +35,7 @@ namespace NzbDrone.Core.Test.IndexerTests.AvistazTests
var recentFeed = ReadAllText(@"Files/Indexers/PrivateHD/recentfeed.json"); var recentFeed = ReadAllText(@"Files/Indexers/PrivateHD/recentfeed.json");
Mocker.GetMock<IIndexerHttpClient>() Mocker.GetMock<IIndexerHttpClient>()
.Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.GET), Subject.Definition)) .Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.Get), Subject.Definition))
.Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader { { "Content-Type", "application/json" } }, new CookieCollection(), recentFeed))); .Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader { { "Content-Type", "application/json" } }, new CookieCollection(), recentFeed)));
var releases = (await Subject.Fetch(new MovieSearchCriteria { Categories = new int[] { 2000 } })).Releases; var releases = (await Subject.Fetch(new MovieSearchCriteria { Categories = new int[] { 2000 } })).Releases;

@ -1,6 +1,7 @@
using System; using System;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using FluentAssertions; using FluentAssertions;
using Moq; using Moq;
@ -33,7 +34,7 @@ namespace NzbDrone.Core.Test.IndexerTests.FileListTests
var recentFeed = ReadAllText(@"Files/Indexers/FileList/recentfeed.json"); var recentFeed = ReadAllText(@"Files/Indexers/FileList/recentfeed.json");
Mocker.GetMock<IIndexerHttpClient>() Mocker.GetMock<IIndexerHttpClient>()
.Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.GET), Subject.Definition)) .Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.Get), Subject.Definition))
.Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), recentFeed))); .Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), recentFeed)));
var releases = (await Subject.Fetch(new MovieSearchCriteria { Categories = new int[] { 2000 } })).Releases; var releases = (await Subject.Fetch(new MovieSearchCriteria { Categories = new int[] { 2000 } })).Releases;

@ -1,6 +1,7 @@
using System; using System;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using FluentAssertions; using FluentAssertions;
@ -45,7 +46,7 @@ namespace NzbDrone.Core.Test.IndexerTests.HDBitsTests
var responseJson = ReadAllText(fileName); var responseJson = ReadAllText(fileName);
Mocker.GetMock<IIndexerHttpClient>() Mocker.GetMock<IIndexerHttpClient>()
.Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.POST), Subject.Definition)) .Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.Post), Subject.Definition))
.Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), responseJson))); .Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), responseJson)));
var torrents = (await Subject.Fetch(_movieSearchCriteria)).Releases; var torrents = (await Subject.Fetch(_movieSearchCriteria)).Releases;

@ -1,6 +1,7 @@
using System; using System;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using FluentAssertions; using FluentAssertions;
using Moq; using Moq;
@ -43,7 +44,7 @@ namespace NzbDrone.Core.Test.IndexerTests.NewznabTests
var recentFeed = ReadAllText(@"Files/Indexers/Newznab/newznab_nzb_su.xml"); var recentFeed = ReadAllText(@"Files/Indexers/Newznab/newznab_nzb_su.xml");
Mocker.GetMock<IIndexerHttpClient>() Mocker.GetMock<IIndexerHttpClient>()
.Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.GET), Subject.Definition)) .Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.Get), Subject.Definition))
.Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), recentFeed))); .Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), recentFeed)));
var releases = (await Subject.Fetch(new MovieSearchCriteria { Categories = new int[] { 2000 }, Limit = 100, Offset = 0 })).Releases; var releases = (await Subject.Fetch(new MovieSearchCriteria { Categories = new int[] { 2000 }, Limit = 100, Offset = 0 })).Releases;

@ -1,5 +1,6 @@
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using FluentAssertions; using FluentAssertions;
using Moq; using Moq;
@ -37,11 +38,11 @@ namespace NzbDrone.Core.Test.IndexerTests.PTPTests
var responseJson = ReadAllText(fileName); var responseJson = ReadAllText(fileName);
Mocker.GetMock<IIndexerHttpClient>() Mocker.GetMock<IIndexerHttpClient>()
.Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.POST), Subject.Definition)) .Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.Post), Subject.Definition))
.Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), authStream.ToString()))); .Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), authStream.ToString())));
Mocker.GetMock<IIndexerHttpClient>() Mocker.GetMock<IIndexerHttpClient>()
.Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.GET), Subject.Definition)) .Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.Get), Subject.Definition))
.Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader { ContentType = HttpAccept.Json.Value }, new CookieCollection(), responseJson))); .Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader { ContentType = HttpAccept.Json.Value }, new CookieCollection(), responseJson)));
var torrents = (await Subject.Fetch(new MovieSearchCriteria())).Releases; var torrents = (await Subject.Fetch(new MovieSearchCriteria())).Releases;

@ -1,6 +1,7 @@
using System; using System;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using FluentAssertions; using FluentAssertions;
using Moq; using Moq;
@ -39,7 +40,7 @@ namespace NzbDrone.Core.Test.IndexerTests.RarbgTests
var recentFeed = ReadAllText(@"Files/Indexers/Rarbg/RecentFeed_v2.json"); var recentFeed = ReadAllText(@"Files/Indexers/Rarbg/RecentFeed_v2.json");
Mocker.GetMock<IIndexerHttpClient>() Mocker.GetMock<IIndexerHttpClient>()
.Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.GET), Subject.Definition)) .Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.Get), Subject.Definition))
.Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), recentFeed))); .Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), recentFeed)));
var releases = (await Subject.Fetch(new MovieSearchCriteria { Categories = new int[] { 2000 } })).Releases; var releases = (await Subject.Fetch(new MovieSearchCriteria { Categories = new int[] { 2000 } })).Releases;
@ -66,7 +67,7 @@ namespace NzbDrone.Core.Test.IndexerTests.RarbgTests
public async Task should_parse_error_20_as_empty_results() public async Task should_parse_error_20_as_empty_results()
{ {
Mocker.GetMock<IIndexerHttpClient>() Mocker.GetMock<IIndexerHttpClient>()
.Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.GET), Subject.Definition)) .Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.Get), Subject.Definition))
.Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), "{ error_code: 20, error: \"some message\" }"))); .Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), "{ error_code: 20, error: \"some message\" }")));
var releases = (await Subject.Fetch(new MovieSearchCriteria { Categories = new int[] { 2000 } })).Releases; var releases = (await Subject.Fetch(new MovieSearchCriteria { Categories = new int[] { 2000 } })).Releases;
@ -78,7 +79,7 @@ namespace NzbDrone.Core.Test.IndexerTests.RarbgTests
public async Task should_warn_on_unknown_error() public async Task should_warn_on_unknown_error()
{ {
Mocker.GetMock<IIndexerHttpClient>() Mocker.GetMock<IIndexerHttpClient>()
.Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.GET), Subject.Definition)) .Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.Get), Subject.Definition))
.Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), "{ error_code: 25, error: \"some message\" }"))); .Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), "{ error_code: 25, error: \"some message\" }")));
var releases = (await Subject.Fetch(new MovieSearchCriteria { Categories = new int[] { 2000 } })).Releases; var releases = (await Subject.Fetch(new MovieSearchCriteria { Categories = new int[] { 2000 } })).Releases;

@ -1,6 +1,7 @@
using System; using System;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using FluentAssertions; using FluentAssertions;
using Moq; using Moq;
@ -44,7 +45,7 @@ namespace NzbDrone.Core.Test.IndexerTests.TorznabTests
var recentFeed = ReadAllText(@"Files/Indexers/Torznab/torznab_hdaccess_net.xml"); var recentFeed = ReadAllText(@"Files/Indexers/Torznab/torznab_hdaccess_net.xml");
Mocker.GetMock<IIndexerHttpClient>() Mocker.GetMock<IIndexerHttpClient>()
.Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.GET), Subject.Definition)) .Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.Get), Subject.Definition))
.Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), recentFeed))); .Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), recentFeed)));
var releases = (await Subject.Fetch(new MovieSearchCriteria())).Releases; var releases = (await Subject.Fetch(new MovieSearchCriteria())).Releases;
@ -73,7 +74,7 @@ namespace NzbDrone.Core.Test.IndexerTests.TorznabTests
var recentFeed = ReadAllText(@"Files/Indexers/Torznab/torznab_tpb.xml"); var recentFeed = ReadAllText(@"Files/Indexers/Torznab/torznab_tpb.xml");
Mocker.GetMock<IIndexerHttpClient>() Mocker.GetMock<IIndexerHttpClient>()
.Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.GET), Subject.Definition)) .Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.Get), Subject.Definition))
.Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), recentFeed))); .Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), recentFeed)));
var releases = (await Subject.Fetch(new MovieSearchCriteria())).Releases; var releases = (await Subject.Fetch(new MovieSearchCriteria())).Releases;
@ -103,7 +104,7 @@ namespace NzbDrone.Core.Test.IndexerTests.TorznabTests
var recentFeed = ReadAllText(@"Files/Indexers/Torznab/torznab_animetosho.xml"); var recentFeed = ReadAllText(@"Files/Indexers/Torznab/torznab_animetosho.xml");
Mocker.GetMock<IIndexerHttpClient>() Mocker.GetMock<IIndexerHttpClient>()
.Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.GET), Subject.Definition)) .Setup(o => o.ExecuteProxiedAsync(It.Is<HttpRequest>(v => v.Method == HttpMethod.Get), Subject.Definition))
.Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), recentFeed))); .Returns<HttpRequest, IndexerDefinition>((r, d) => Task.FromResult(new HttpResponse(r, new HttpHeader(), new CookieCollection(), recentFeed)));
var releases = (await Subject.Fetch(new MovieSearchCriteria())).Releases; var releases = (await Subject.Fetch(new MovieSearchCriteria())).Releases;

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using FluentValidation.Results; using FluentValidation.Results;
using Newtonsoft.Json; using Newtonsoft.Json;
using NLog; using NLog;
@ -31,13 +32,13 @@ namespace NzbDrone.Core.Applications.LazyLibrarian
public LazyLibrarianStatus GetStatus(LazyLibrarianSettings settings) public LazyLibrarianStatus GetStatus(LazyLibrarianSettings settings)
{ {
var request = BuildRequest(settings, "/api", "getVersion", HttpMethod.GET); var request = BuildRequest(settings, "/api", "getVersion", HttpMethod.Get);
return Execute<LazyLibrarianStatus>(request); return Execute<LazyLibrarianStatus>(request);
} }
public List<LazyLibrarianIndexer> GetIndexers(LazyLibrarianSettings settings) public List<LazyLibrarianIndexer> GetIndexers(LazyLibrarianSettings settings)
{ {
var request = BuildRequest(settings, "/api", "listNabProviders", HttpMethod.GET); var request = BuildRequest(settings, "/api", "listNabProviders", HttpMethod.Get);
var response = Execute<LazyLibrarianIndexerResponse>(request); var response = Execute<LazyLibrarianIndexerResponse>(request);
@ -76,7 +77,7 @@ namespace NzbDrone.Core.Applications.LazyLibrarian
{ "providertype", indexerType.ToString().ToLower() } { "providertype", indexerType.ToString().ToLower() }
}; };
var request = BuildRequest(settings, "/api", "delProvider", HttpMethod.GET, parameters); var request = BuildRequest(settings, "/api", "delProvider", HttpMethod.Get, parameters);
CheckForError(Execute<LazyLibrarianStatus>(request)); CheckForError(Execute<LazyLibrarianStatus>(request));
} }
@ -92,7 +93,7 @@ namespace NzbDrone.Core.Applications.LazyLibrarian
{ "categories", indexer.Categories } { "categories", indexer.Categories }
}; };
var request = BuildRequest(settings, "/api", "addProvider", HttpMethod.GET, parameters); var request = BuildRequest(settings, "/api", "addProvider", HttpMethod.Get, parameters);
CheckForError(Execute<LazyLibrarianStatus>(request)); CheckForError(Execute<LazyLibrarianStatus>(request));
return indexer; return indexer;
} }
@ -110,7 +111,7 @@ namespace NzbDrone.Core.Applications.LazyLibrarian
{ "altername", indexer.Altername } { "altername", indexer.Altername }
}; };
var request = BuildRequest(settings, "/api", "changeProvider", HttpMethod.GET, parameters); var request = BuildRequest(settings, "/api", "changeProvider", HttpMethod.Get, parameters);
CheckForError(Execute<LazyLibrarianStatus>(request)); CheckForError(Execute<LazyLibrarianStatus>(request));
return indexer; return indexer;
} }

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net; using System.Net;
using System.Net.Http;
using FluentValidation.Results; using FluentValidation.Results;
using Newtonsoft.Json; using Newtonsoft.Json;
using NLog; using NLog;
@ -33,13 +34,13 @@ namespace NzbDrone.Core.Applications.Lidarr
public LidarrStatus GetStatus(LidarrSettings settings) public LidarrStatus GetStatus(LidarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v1/system/status", HttpMethod.GET); var request = BuildRequest(settings, "/api/v1/system/status", HttpMethod.Get);
return Execute<LidarrStatus>(request); return Execute<LidarrStatus>(request);
} }
public List<LidarrIndexer> GetIndexers(LidarrSettings settings) public List<LidarrIndexer> GetIndexers(LidarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v1/indexer", HttpMethod.GET); var request = BuildRequest(settings, "/api/v1/indexer", HttpMethod.Get);
return Execute<List<LidarrIndexer>>(request); return Execute<List<LidarrIndexer>>(request);
} }
@ -47,7 +48,7 @@ namespace NzbDrone.Core.Applications.Lidarr
{ {
try try
{ {
var request = BuildRequest(settings, $"/api/v1/indexer/{indexerId}", HttpMethod.GET); var request = BuildRequest(settings, $"/api/v1/indexer/{indexerId}", HttpMethod.Get);
return Execute<LidarrIndexer>(request); return Execute<LidarrIndexer>(request);
} }
catch (HttpException ex) catch (HttpException ex)
@ -63,19 +64,19 @@ namespace NzbDrone.Core.Applications.Lidarr
public void RemoveIndexer(int indexerId, LidarrSettings settings) public void RemoveIndexer(int indexerId, LidarrSettings settings)
{ {
var request = BuildRequest(settings, $"/api/v1/indexer/{indexerId}", HttpMethod.DELETE); var request = BuildRequest(settings, $"/api/v1/indexer/{indexerId}", HttpMethod.Delete);
_httpClient.Execute(request); _httpClient.Execute(request);
} }
public List<LidarrIndexer> GetIndexerSchema(LidarrSettings settings) public List<LidarrIndexer> GetIndexerSchema(LidarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v1/indexer/schema", HttpMethod.GET); var request = BuildRequest(settings, "/api/v1/indexer/schema", HttpMethod.Get);
return Execute<List<LidarrIndexer>>(request); return Execute<List<LidarrIndexer>>(request);
} }
public LidarrIndexer AddIndexer(LidarrIndexer indexer, LidarrSettings settings) public LidarrIndexer AddIndexer(LidarrIndexer indexer, LidarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v1/indexer", HttpMethod.POST); var request = BuildRequest(settings, "/api/v1/indexer", HttpMethod.Post);
request.SetContent(indexer.ToJson()); request.SetContent(indexer.ToJson());
@ -84,7 +85,7 @@ namespace NzbDrone.Core.Applications.Lidarr
public LidarrIndexer UpdateIndexer(LidarrIndexer indexer, LidarrSettings settings) public LidarrIndexer UpdateIndexer(LidarrIndexer indexer, LidarrSettings settings)
{ {
var request = BuildRequest(settings, $"/api/v1/indexer/{indexer.Id}", HttpMethod.PUT); var request = BuildRequest(settings, $"/api/v1/indexer/{indexer.Id}", HttpMethod.Put);
request.SetContent(indexer.ToJson()); request.SetContent(indexer.ToJson());
@ -93,7 +94,7 @@ namespace NzbDrone.Core.Applications.Lidarr
public ValidationFailure TestConnection(LidarrIndexer indexer, LidarrSettings settings) public ValidationFailure TestConnection(LidarrIndexer indexer, LidarrSettings settings)
{ {
var request = BuildRequest(settings, $"/api/v1/indexer/test", HttpMethod.POST); var request = BuildRequest(settings, $"/api/v1/indexer/test", HttpMethod.Post);
request.SetContent(indexer.ToJson()); request.SetContent(indexer.ToJson());

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using FluentValidation.Results; using FluentValidation.Results;
using Newtonsoft.Json; using Newtonsoft.Json;
using NLog; using NLog;
@ -31,13 +32,13 @@ namespace NzbDrone.Core.Applications.Mylar
public MylarStatus GetStatus(MylarSettings settings) public MylarStatus GetStatus(MylarSettings settings)
{ {
var request = BuildRequest(settings, "/api", "getVersion", HttpMethod.GET); var request = BuildRequest(settings, "/api", "getVersion", HttpMethod.Get);
return Execute<MylarStatus>(request); return Execute<MylarStatus>(request);
} }
public List<MylarIndexer> GetIndexers(MylarSettings settings) public List<MylarIndexer> GetIndexers(MylarSettings settings)
{ {
var request = BuildRequest(settings, "/api", "listProviders", HttpMethod.GET); var request = BuildRequest(settings, "/api", "listProviders", HttpMethod.Get);
var response = Execute<MylarIndexerResponse>(request); var response = Execute<MylarIndexerResponse>(request);
@ -76,7 +77,7 @@ namespace NzbDrone.Core.Applications.Mylar
{ "providertype", indexerType.ToString().ToLower() } { "providertype", indexerType.ToString().ToLower() }
}; };
var request = BuildRequest(settings, "/api", "delProvider", HttpMethod.GET, parameters); var request = BuildRequest(settings, "/api", "delProvider", HttpMethod.Get, parameters);
CheckForError(Execute<MylarStatus>(request)); CheckForError(Execute<MylarStatus>(request));
} }
@ -92,7 +93,7 @@ namespace NzbDrone.Core.Applications.Mylar
{ "categories", indexer.Categories } { "categories", indexer.Categories }
}; };
var request = BuildRequest(settings, "/api", "addProvider", HttpMethod.GET, parameters); var request = BuildRequest(settings, "/api", "addProvider", HttpMethod.Get, parameters);
CheckForError(Execute<MylarStatus>(request)); CheckForError(Execute<MylarStatus>(request));
return indexer; return indexer;
} }
@ -110,7 +111,7 @@ namespace NzbDrone.Core.Applications.Mylar
{ "altername", indexer.Altername } { "altername", indexer.Altername }
}; };
var request = BuildRequest(settings, "/api", "changeProvider", HttpMethod.GET, parameters); var request = BuildRequest(settings, "/api", "changeProvider", HttpMethod.Get, parameters);
CheckForError(Execute<MylarStatus>(request)); CheckForError(Execute<MylarStatus>(request));
return indexer; return indexer;
} }

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net; using System.Net;
using System.Net.Http;
using FluentValidation.Results; using FluentValidation.Results;
using Newtonsoft.Json; using Newtonsoft.Json;
using NLog; using NLog;
@ -33,13 +34,13 @@ namespace NzbDrone.Core.Applications.Radarr
public RadarrStatus GetStatus(RadarrSettings settings) public RadarrStatus GetStatus(RadarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v3/system/status", HttpMethod.GET); var request = BuildRequest(settings, "/api/v3/system/status", HttpMethod.Get);
return Execute<RadarrStatus>(request); return Execute<RadarrStatus>(request);
} }
public List<RadarrIndexer> GetIndexers(RadarrSettings settings) public List<RadarrIndexer> GetIndexers(RadarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v3/indexer", HttpMethod.GET); var request = BuildRequest(settings, "/api/v3/indexer", HttpMethod.Get);
return Execute<List<RadarrIndexer>>(request); return Execute<List<RadarrIndexer>>(request);
} }
@ -47,7 +48,7 @@ namespace NzbDrone.Core.Applications.Radarr
{ {
try try
{ {
var request = BuildRequest(settings, $"/api/v3/indexer/{indexerId}", HttpMethod.GET); var request = BuildRequest(settings, $"/api/v3/indexer/{indexerId}", HttpMethod.Get);
return Execute<RadarrIndexer>(request); return Execute<RadarrIndexer>(request);
} }
catch (HttpException ex) catch (HttpException ex)
@ -63,19 +64,19 @@ namespace NzbDrone.Core.Applications.Radarr
public void RemoveIndexer(int indexerId, RadarrSettings settings) public void RemoveIndexer(int indexerId, RadarrSettings settings)
{ {
var request = BuildRequest(settings, $"/api/v3/indexer/{indexerId}", HttpMethod.DELETE); var request = BuildRequest(settings, $"/api/v3/indexer/{indexerId}", HttpMethod.Delete);
_httpClient.Execute(request); _httpClient.Execute(request);
} }
public List<RadarrIndexer> GetIndexerSchema(RadarrSettings settings) public List<RadarrIndexer> GetIndexerSchema(RadarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v3/indexer/schema", HttpMethod.GET); var request = BuildRequest(settings, "/api/v3/indexer/schema", HttpMethod.Get);
return Execute<List<RadarrIndexer>>(request); return Execute<List<RadarrIndexer>>(request);
} }
public RadarrIndexer AddIndexer(RadarrIndexer indexer, RadarrSettings settings) public RadarrIndexer AddIndexer(RadarrIndexer indexer, RadarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v3/indexer", HttpMethod.POST); var request = BuildRequest(settings, "/api/v3/indexer", HttpMethod.Post);
request.SetContent(indexer.ToJson()); request.SetContent(indexer.ToJson());
@ -84,7 +85,7 @@ namespace NzbDrone.Core.Applications.Radarr
public RadarrIndexer UpdateIndexer(RadarrIndexer indexer, RadarrSettings settings) public RadarrIndexer UpdateIndexer(RadarrIndexer indexer, RadarrSettings settings)
{ {
var request = BuildRequest(settings, $"/api/v3/indexer/{indexer.Id}", HttpMethod.PUT); var request = BuildRequest(settings, $"/api/v3/indexer/{indexer.Id}", HttpMethod.Put);
request.SetContent(indexer.ToJson()); request.SetContent(indexer.ToJson());
@ -93,7 +94,7 @@ namespace NzbDrone.Core.Applications.Radarr
public ValidationFailure TestConnection(RadarrIndexer indexer, RadarrSettings settings) public ValidationFailure TestConnection(RadarrIndexer indexer, RadarrSettings settings)
{ {
var request = BuildRequest(settings, $"/api/v3/indexer/test", HttpMethod.POST); var request = BuildRequest(settings, $"/api/v3/indexer/test", HttpMethod.Post);
request.SetContent(indexer.ToJson()); request.SetContent(indexer.ToJson());

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net; using System.Net;
using System.Net.Http;
using FluentValidation.Results; using FluentValidation.Results;
using Newtonsoft.Json; using Newtonsoft.Json;
using NLog; using NLog;
@ -33,13 +34,13 @@ namespace NzbDrone.Core.Applications.Readarr
public ReadarrStatus GetStatus(ReadarrSettings settings) public ReadarrStatus GetStatus(ReadarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v1/system/status", HttpMethod.GET); var request = BuildRequest(settings, "/api/v1/system/status", HttpMethod.Get);
return Execute<ReadarrStatus>(request); return Execute<ReadarrStatus>(request);
} }
public List<ReadarrIndexer> GetIndexers(ReadarrSettings settings) public List<ReadarrIndexer> GetIndexers(ReadarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v1/indexer", HttpMethod.GET); var request = BuildRequest(settings, "/api/v1/indexer", HttpMethod.Get);
return Execute<List<ReadarrIndexer>>(request); return Execute<List<ReadarrIndexer>>(request);
} }
@ -47,7 +48,7 @@ namespace NzbDrone.Core.Applications.Readarr
{ {
try try
{ {
var request = BuildRequest(settings, $"/api/v1/indexer/{indexerId}", HttpMethod.GET); var request = BuildRequest(settings, $"/api/v1/indexer/{indexerId}", HttpMethod.Get);
return Execute<ReadarrIndexer>(request); return Execute<ReadarrIndexer>(request);
} }
catch (HttpException ex) catch (HttpException ex)
@ -63,19 +64,19 @@ namespace NzbDrone.Core.Applications.Readarr
public void RemoveIndexer(int indexerId, ReadarrSettings settings) public void RemoveIndexer(int indexerId, ReadarrSettings settings)
{ {
var request = BuildRequest(settings, $"/api/v1/indexer/{indexerId}", HttpMethod.DELETE); var request = BuildRequest(settings, $"/api/v1/indexer/{indexerId}", HttpMethod.Delete);
_httpClient.Execute(request); _httpClient.Execute(request);
} }
public List<ReadarrIndexer> GetIndexerSchema(ReadarrSettings settings) public List<ReadarrIndexer> GetIndexerSchema(ReadarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v1/indexer/schema", HttpMethod.GET); var request = BuildRequest(settings, "/api/v1/indexer/schema", HttpMethod.Get);
return Execute<List<ReadarrIndexer>>(request); return Execute<List<ReadarrIndexer>>(request);
} }
public ReadarrIndexer AddIndexer(ReadarrIndexer indexer, ReadarrSettings settings) public ReadarrIndexer AddIndexer(ReadarrIndexer indexer, ReadarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v1/indexer", HttpMethod.POST); var request = BuildRequest(settings, "/api/v1/indexer", HttpMethod.Post);
request.SetContent(indexer.ToJson()); request.SetContent(indexer.ToJson());
@ -84,7 +85,7 @@ namespace NzbDrone.Core.Applications.Readarr
public ReadarrIndexer UpdateIndexer(ReadarrIndexer indexer, ReadarrSettings settings) public ReadarrIndexer UpdateIndexer(ReadarrIndexer indexer, ReadarrSettings settings)
{ {
var request = BuildRequest(settings, $"/api/v1/indexer/{indexer.Id}", HttpMethod.PUT); var request = BuildRequest(settings, $"/api/v1/indexer/{indexer.Id}", HttpMethod.Put);
request.SetContent(indexer.ToJson()); request.SetContent(indexer.ToJson());
@ -93,7 +94,7 @@ namespace NzbDrone.Core.Applications.Readarr
public ValidationFailure TestConnection(ReadarrIndexer indexer, ReadarrSettings settings) public ValidationFailure TestConnection(ReadarrIndexer indexer, ReadarrSettings settings)
{ {
var request = BuildRequest(settings, $"/api/v1/indexer/test", HttpMethod.POST); var request = BuildRequest(settings, $"/api/v1/indexer/test", HttpMethod.Post);
request.SetContent(indexer.ToJson()); request.SetContent(indexer.ToJson());

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net; using System.Net;
using System.Net.Http;
using FluentValidation.Results; using FluentValidation.Results;
using Newtonsoft.Json; using Newtonsoft.Json;
using NLog; using NLog;
@ -33,13 +34,13 @@ namespace NzbDrone.Core.Applications.Sonarr
public SonarrStatus GetStatus(SonarrSettings settings) public SonarrStatus GetStatus(SonarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v3/system/status", HttpMethod.GET); var request = BuildRequest(settings, "/api/v3/system/status", HttpMethod.Get);
return Execute<SonarrStatus>(request); return Execute<SonarrStatus>(request);
} }
public List<SonarrIndexer> GetIndexers(SonarrSettings settings) public List<SonarrIndexer> GetIndexers(SonarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v3/indexer", HttpMethod.GET); var request = BuildRequest(settings, "/api/v3/indexer", HttpMethod.Get);
return Execute<List<SonarrIndexer>>(request); return Execute<List<SonarrIndexer>>(request);
} }
@ -47,7 +48,7 @@ namespace NzbDrone.Core.Applications.Sonarr
{ {
try try
{ {
var request = BuildRequest(settings, $"/api/v3/indexer/{indexerId}", HttpMethod.GET); var request = BuildRequest(settings, $"/api/v3/indexer/{indexerId}", HttpMethod.Get);
return Execute<SonarrIndexer>(request); return Execute<SonarrIndexer>(request);
} }
catch (HttpException ex) catch (HttpException ex)
@ -63,19 +64,19 @@ namespace NzbDrone.Core.Applications.Sonarr
public void RemoveIndexer(int indexerId, SonarrSettings settings) public void RemoveIndexer(int indexerId, SonarrSettings settings)
{ {
var request = BuildRequest(settings, $"/api/v3/indexer/{indexerId}", HttpMethod.DELETE); var request = BuildRequest(settings, $"/api/v3/indexer/{indexerId}", HttpMethod.Delete);
_httpClient.Execute(request); _httpClient.Execute(request);
} }
public List<SonarrIndexer> GetIndexerSchema(SonarrSettings settings) public List<SonarrIndexer> GetIndexerSchema(SonarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v3/indexer/schema", HttpMethod.GET); var request = BuildRequest(settings, "/api/v3/indexer/schema", HttpMethod.Get);
return Execute<List<SonarrIndexer>>(request); return Execute<List<SonarrIndexer>>(request);
} }
public SonarrIndexer AddIndexer(SonarrIndexer indexer, SonarrSettings settings) public SonarrIndexer AddIndexer(SonarrIndexer indexer, SonarrSettings settings)
{ {
var request = BuildRequest(settings, "/api/v3/indexer", HttpMethod.POST); var request = BuildRequest(settings, "/api/v3/indexer", HttpMethod.Post);
request.SetContent(indexer.ToJson()); request.SetContent(indexer.ToJson());
@ -84,7 +85,7 @@ namespace NzbDrone.Core.Applications.Sonarr
public SonarrIndexer UpdateIndexer(SonarrIndexer indexer, SonarrSettings settings) public SonarrIndexer UpdateIndexer(SonarrIndexer indexer, SonarrSettings settings)
{ {
var request = BuildRequest(settings, $"/api/v3/indexer/{indexer.Id}", HttpMethod.PUT); var request = BuildRequest(settings, $"/api/v3/indexer/{indexer.Id}", HttpMethod.Put);
request.SetContent(indexer.ToJson()); request.SetContent(indexer.ToJson());
@ -93,7 +94,7 @@ namespace NzbDrone.Core.Applications.Sonarr
public ValidationFailure TestConnection(SonarrIndexer indexer, SonarrSettings settings) public ValidationFailure TestConnection(SonarrIndexer indexer, SonarrSettings settings)
{ {
var request = BuildRequest(settings, $"/api/v3/indexer/test", HttpMethod.POST); var request = BuildRequest(settings, $"/api/v3/indexer/test", HttpMethod.Post);
request.SetContent(indexer.ToJson()); request.SetContent(indexer.ToJson());

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net; using System.Net;
using System.Net.Http;
using NLog; using NLog;
using NzbDrone.Common.Cache; using NzbDrone.Common.Cache;
using NzbDrone.Common.Http; using NzbDrone.Common.Http;
@ -142,15 +143,19 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation.Proxies
return authResponse.Data.SId; return authResponse.Data.SId;
} }
protected HttpRequestBuilder BuildRequest(DownloadStationSettings settings, string methodName, int apiVersion, HttpMethod httpVerb = HttpMethod.GET) protected HttpRequestBuilder BuildRequest(DownloadStationSettings settings, string methodName, int apiVersion, HttpMethod httpVerb = null)
{ {
httpVerb ??= HttpMethod.Get;
var info = GetApiInfo(_apiType, settings); var info = GetApiInfo(_apiType, settings);
return BuildRequest(settings, info, methodName, apiVersion, httpVerb); return BuildRequest(settings, info, methodName, apiVersion, httpVerb);
} }
private HttpRequestBuilder BuildRequest(DownloadStationSettings settings, DiskStationApiInfo apiInfo, string methodName, int apiVersion, HttpMethod httpVerb = HttpMethod.GET) private HttpRequestBuilder BuildRequest(DownloadStationSettings settings, DiskStationApiInfo apiInfo, string methodName, int apiVersion, HttpMethod httpVerb = null)
{ {
httpVerb ??= HttpMethod.Get;
var requestBuilder = new HttpRequestBuilder(settings.UseSsl, settings.Host, settings.Port).Resource($"webapi/{apiInfo.Path}"); var requestBuilder = new HttpRequestBuilder(settings.UseSsl, settings.Host, settings.Port).Resource($"webapi/{apiInfo.Path}");
requestBuilder.Method = httpVerb; requestBuilder.Method = httpVerb;
requestBuilder.LogResponseContent = true; requestBuilder.LogResponseContent = true;
@ -163,7 +168,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation.Proxies
throw new ArgumentOutOfRangeException(nameof(apiVersion)); throw new ArgumentOutOfRangeException(nameof(apiVersion));
} }
if (httpVerb == HttpMethod.POST) if (httpVerb == HttpMethod.Post)
{ {
if (apiInfo.NeedsAuthentication) if (apiInfo.NeedsAuthentication)
{ {

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Net.Http;
using NLog; using NLog;
using NzbDrone.Common.Cache; using NzbDrone.Common.Cache;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
@ -24,7 +25,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation.Proxies
public void AddTaskFromData(byte[] data, string filename, string downloadDirectory, DownloadStationSettings settings) public void AddTaskFromData(byte[] data, string filename, string downloadDirectory, DownloadStationSettings settings)
{ {
var requestBuilder = BuildRequest(settings, "create", 2, HttpMethod.POST); var requestBuilder = BuildRequest(settings, "create", 2, HttpMethod.Post);
if (downloadDirectory.IsNotNullOrWhiteSpace()) if (downloadDirectory.IsNotNullOrWhiteSpace())
{ {

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using NLog; using NLog;
using NzbDrone.Common.Cache; using NzbDrone.Common.Cache;
using NzbDrone.Common.Http; using NzbDrone.Common.Http;
@ -107,7 +108,7 @@ namespace NzbDrone.Core.Download.Clients.Flood
{ {
var verifyRequest = BuildRequest(settings).Resource("/auth/verify").Build(); var verifyRequest = BuildRequest(settings).Resource("/auth/verify").Build();
verifyRequest.Method = HttpMethod.GET; verifyRequest.Method = HttpMethod.Get;
HandleRequest(verifyRequest, settings); HandleRequest(verifyRequest, settings);
} }
@ -180,7 +181,7 @@ namespace NzbDrone.Core.Download.Clients.Flood
{ {
var getTorrentsRequest = BuildRequest(settings).Resource("/torrents").Build(); var getTorrentsRequest = BuildRequest(settings).Resource("/torrents").Build();
getTorrentsRequest.Method = HttpMethod.GET; getTorrentsRequest.Method = HttpMethod.Get;
return Json.Deserialize<TorrentListSummary>(HandleRequest(getTorrentsRequest, settings).Content).Torrents; return Json.Deserialize<TorrentListSummary>(HandleRequest(getTorrentsRequest, settings).Content).Torrents;
} }
@ -189,7 +190,7 @@ namespace NzbDrone.Core.Download.Clients.Flood
{ {
var contentsRequest = BuildRequest(settings).Resource($"/torrents/{hash}/contents").Build(); var contentsRequest = BuildRequest(settings).Resource($"/torrents/{hash}/contents").Build();
contentsRequest.Method = HttpMethod.GET; contentsRequest.Method = HttpMethod.Get;
return Json.Deserialize<List<TorrentContent>>(HandleRequest(contentsRequest, settings).Content).ConvertAll(content => content.Path); return Json.Deserialize<List<TorrentContent>>(HandleRequest(contentsRequest, settings).Content).ConvertAll(content => content.Path);
} }
@ -198,7 +199,7 @@ namespace NzbDrone.Core.Download.Clients.Flood
{ {
var tagsRequest = BuildRequest(settings).Resource("/torrents/tags").Build(); var tagsRequest = BuildRequest(settings).Resource("/torrents/tags").Build();
tagsRequest.Method = HttpMethod.PATCH; tagsRequest.Method = HttpMethod.Patch;
var body = new Dictionary<string, object> var body = new Dictionary<string, object>
{ {

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using FluentValidation.Results; using FluentValidation.Results;
using Newtonsoft.Json; using Newtonsoft.Json;
using NLog; using NLog;
@ -115,7 +116,7 @@ namespace NzbDrone.Core.IndexerProxies.FlareSolverr
var userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"; var userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36";
var maxTimeout = Settings.RequestTimeout * 1000; var maxTimeout = Settings.RequestTimeout * 1000;
if (request.Method == HttpMethod.GET) if (request.Method == HttpMethod.Get)
{ {
req = new FlareSolverrRequestGet req = new FlareSolverrRequestGet
{ {
@ -125,7 +126,7 @@ namespace NzbDrone.Core.IndexerProxies.FlareSolverr
UserAgent = userAgent UserAgent = userAgent
}; };
} }
else if (request.Method == HttpMethod.POST) else if (request.Method == HttpMethod.Post)
{ {
var contentTypeType = request.Headers.ContentType; var contentTypeType = request.Headers.ContentType;
@ -167,7 +168,7 @@ namespace NzbDrone.Core.IndexerProxies.FlareSolverr
var newRequest = new HttpRequest(apiUrl, HttpAccept.Json); var newRequest = new HttpRequest(apiUrl, HttpAccept.Json);
newRequest.Headers.ContentType = "application/json"; newRequest.Headers.ContentType = "application/json";
newRequest.Method = HttpMethod.POST; newRequest.Method = HttpMethod.Post;
newRequest.SetContent(req.ToJson()); newRequest.SetContent(req.ToJson());
_logger.Debug("Applying FlareSolverr Proxy {0} to request {1}", Name, request.Url); _logger.Debug("Applying FlareSolverr Proxy {0} to request {1}", Name, request.Url);

@ -60,7 +60,7 @@ namespace NzbDrone.Core.Indexers.Definitions
var mainPage = await ExecuteAuth(new HttpRequest(Settings.BaseUrl)); var mainPage = await ExecuteAuth(new HttpRequest(Settings.BaseUrl));
requestBuilder.Method = Common.Http.HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
requestBuilder.SetCookies(mainPage.GetCookies()); requestBuilder.SetCookies(mainPage.GetCookies());
@ -167,7 +167,7 @@ namespace NzbDrone.Core.Indexers.Definitions
if (isSearch) if (isSearch)
{ {
request.HttpRequest.Method = NzbDrone.Common.Http.HttpMethod.POST; request.HttpRequest.Method = HttpMethod.Post;
var postData = new NameValueCollection var postData = new NameValueCollection
{ {
{ "do", "search" }, { "do", "search" },

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using AngleSharp.Html.Parser; using AngleSharp.Html.Parser;
@ -57,7 +58,7 @@ namespace NzbDrone.Core.Indexers.Definitions
}; };
var loginPage = await ExecuteAuth(new HttpRequest(LoginUrl)); var loginPage = await ExecuteAuth(new HttpRequest(LoginUrl));
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
requestBuilder.SetCookies(loginPage.GetCookies()); requestBuilder.SetCookies(loginPage.GetCookies());

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using AngleSharp.Html.Parser; using AngleSharp.Html.Parser;
@ -56,7 +57,7 @@ namespace NzbDrone.Core.Indexers.Definitions
AllowAutoRedirect = true AllowAutoRedirect = true
}; };
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
var cookies = Cookies; var cookies = Cookies;

@ -1,5 +1,6 @@
using System; using System;
using System.Net; using System.Net;
using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using FluentValidation.Results; using FluentValidation.Results;
using NLog; using NLog;
@ -105,7 +106,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
LogResponseContent = true LogResponseContent = true
}; };
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
var authLoginRequest = requestBuilder var authLoginRequest = requestBuilder

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Net.Http;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -55,7 +56,7 @@ namespace NzbDrone.Core.Indexers.Definitions
AllowAutoRedirect = true AllowAutoRedirect = true
}; };
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
var cookies = Cookies; var cookies = Cookies;

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using AngleSharp.Dom; using AngleSharp.Dom;
@ -79,7 +80,7 @@ namespace NzbDrone.Core.Indexers.Definitions
var loginPage = await ExecuteAuth(new HttpRequest(LoginUrl)); var loginPage = await ExecuteAuth(new HttpRequest(LoginUrl));
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
requestBuilder.SetCookies(loginPage.GetCookies()); requestBuilder.SetCookies(loginPage.GetCookies());

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using FluentValidation; using FluentValidation;
using Newtonsoft.Json; using Newtonsoft.Json;
using NLog; using NLog;
@ -110,7 +111,7 @@ namespace NzbDrone.Core.Indexers.Definitions
var request = new HttpRequest(searchUrl, HttpAccept.Json); var request = new HttpRequest(searchUrl, HttpAccept.Json);
request.Headers.Add("Content-type", "application/json"); request.Headers.Add("Content-type", "application/json");
request.Method = HttpMethod.POST; request.Method = HttpMethod.Post;
request.SetContent(body.ToJson()); request.SetContent(body.ToJson());
var indexerRequest = new IndexerRequest(request); var indexerRequest = new IndexerRequest(request);

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using AngleSharp.Html.Dom; using AngleSharp.Html.Dom;
@ -184,7 +185,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
var requestBuilder = new HttpRequestBuilder(loginUrl) var requestBuilder = new HttpRequestBuilder(loginUrl)
{ {
LogResponseContent = true, LogResponseContent = true,
Method = HttpMethod.POST, Method = HttpMethod.Post,
AllowAutoRedirect = true, AllowAutoRedirect = true,
SuppressHttpError = true, SuppressHttpError = true,
Encoding = _encoding Encoding = _encoding
@ -329,7 +330,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
var requestBuilder = new HttpRequestBuilder(captchaUrl.ToString()) var requestBuilder = new HttpRequestBuilder(captchaUrl.ToString())
{ {
LogResponseContent = true, LogResponseContent = true,
Method = HttpMethod.GET, Method = HttpMethod.Get,
Encoding = _encoding Encoding = _encoding
}; };
@ -394,7 +395,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
var requestBuilder = new HttpRequestBuilder(submitUrl.ToString()) var requestBuilder = new HttpRequestBuilder(submitUrl.ToString())
{ {
LogResponseContent = true, LogResponseContent = true,
Method = HttpMethod.POST, Method = HttpMethod.Post,
AllowAutoRedirect = true, AllowAutoRedirect = true,
Encoding = _encoding Encoding = _encoding
}; };
@ -423,7 +424,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
var requestBuilder = new HttpRequestBuilder(submitUrl.ToString()) var requestBuilder = new HttpRequestBuilder(submitUrl.ToString())
{ {
LogResponseContent = true, LogResponseContent = true,
Method = HttpMethod.POST, Method = HttpMethod.Post,
AllowAutoRedirect = true, AllowAutoRedirect = true,
SuppressHttpError = true, SuppressHttpError = true,
Encoding = _encoding Encoding = _encoding
@ -466,7 +467,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
var requestBuilder = new HttpRequestBuilder(loginUrl) var requestBuilder = new HttpRequestBuilder(loginUrl)
{ {
LogResponseContent = true, LogResponseContent = true,
Method = HttpMethod.GET, Method = HttpMethod.Get,
SuppressHttpError = true, SuppressHttpError = true,
Encoding = _encoding Encoding = _encoding
}; };
@ -491,7 +492,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
var requestBuilder = new HttpRequestBuilder(loginUrl) var requestBuilder = new HttpRequestBuilder(loginUrl)
{ {
LogResponseContent = true, LogResponseContent = true,
Method = HttpMethod.GET, Method = HttpMethod.Get,
SuppressHttpError = true, SuppressHttpError = true,
Encoding = _encoding Encoding = _encoding
}; };
@ -565,7 +566,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
var requestBuilder = new HttpRequestBuilder(loginUrl.AbsoluteUri) var requestBuilder = new HttpRequestBuilder(loginUrl.AbsoluteUri)
{ {
LogResponseContent = true, LogResponseContent = true,
Method = HttpMethod.GET, Method = HttpMethod.Get,
Encoding = _encoding Encoding = _encoding
}; };
@ -666,21 +667,21 @@ namespace NzbDrone.Core.Indexers.Cardigann
Dictionary<string, string> pairs = null; Dictionary<string, string> pairs = null;
var queryCollection = new NameValueCollection(); var queryCollection = new NameValueCollection();
var method = HttpMethod.GET; var method = HttpMethod.Get;
if (string.Equals(request.Method, "post", StringComparison.OrdinalIgnoreCase)) if (string.Equals(request.Method, "post", StringComparison.OrdinalIgnoreCase))
{ {
method = HttpMethod.POST; method = HttpMethod.Post;
pairs = new Dictionary<string, string>(); pairs = new Dictionary<string, string>();
} }
foreach (var input in request.Inputs) foreach (var input in request.Inputs)
{ {
var value = ApplyGoTemplateText(input.Value, variables); var value = ApplyGoTemplateText(input.Value, variables);
if (method == HttpMethod.GET) if (method == HttpMethod.Get)
{ {
queryCollection.Add(input.Key, value); queryCollection.Add(input.Key, value);
} }
else if (method == HttpMethod.POST) else if (method == HttpMethod.Post)
{ {
pairs.Add(input.Key, value); pairs.Add(input.Key, value);
} }
@ -707,7 +708,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
httpRequest.Method = method; httpRequest.Method = method;
// Add form data for POST requests // Add form data for POST requests
if (method == HttpMethod.POST) if (method == HttpMethod.Post)
{ {
foreach (var param in pairs) foreach (var param in pairs)
{ {
@ -724,7 +725,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
public async Task<HttpRequest> DownloadRequest(Uri link) public async Task<HttpRequest> DownloadRequest(Uri link)
{ {
Cookies = GetCookies(); Cookies = GetCookies();
var method = HttpMethod.GET; var method = HttpMethod.Get;
var headers = new Dictionary<string, string>(); var headers = new Dictionary<string, string>();
var variables = GetBaseTemplateVariables(); var variables = GetBaseTemplateVariables();
@ -759,7 +760,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
if (download.Method == "post") if (download.Method == "post")
{ {
method = HttpMethod.POST; method = HttpMethod.Post;
} }
if (download.Infohash != null) if (download.Infohash != null)
@ -1014,11 +1015,11 @@ namespace NzbDrone.Core.Indexers.Cardigann
// HttpUtility.UrlPathEncode seems to only encode spaces, we use UrlEncode and replace + with %20 as a workaround // HttpUtility.UrlPathEncode seems to only encode spaces, we use UrlEncode and replace + with %20 as a workaround
var searchUrl = ResolvePath(ApplyGoTemplateText(searchPath.Path, variables, WebUtility.UrlEncode).Replace("+", "%20")).AbsoluteUri; var searchUrl = ResolvePath(ApplyGoTemplateText(searchPath.Path, variables, WebUtility.UrlEncode).Replace("+", "%20")).AbsoluteUri;
var queryCollection = new List<KeyValuePair<string, string>>(); var queryCollection = new List<KeyValuePair<string, string>>();
var method = HttpMethod.GET; var method = HttpMethod.Get;
if (string.Equals(searchPath.Method, "post", StringComparison.OrdinalIgnoreCase)) if (string.Equals(searchPath.Method, "post", StringComparison.OrdinalIgnoreCase))
{ {
method = HttpMethod.POST; method = HttpMethod.Post;
} }
var inputsList = new List<Dictionary<string, string>>(); var inputsList = new List<Dictionary<string, string>>();
@ -1064,7 +1065,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
} }
} }
if (method == HttpMethod.GET) if (method == HttpMethod.Get)
{ {
if (queryCollection.Count > 0) if (queryCollection.Count > 0)
{ {
@ -1079,7 +1080,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
requestbuilder.Method = method; requestbuilder.Method = method;
// Add FormData for searchs that POST // Add FormData for searchs that POST
if (method == HttpMethod.POST) if (method == HttpMethod.Post)
{ {
foreach (var param in queryCollection) foreach (var param in queryCollection)
{ {

@ -1,4 +1,5 @@
using System; using System;
using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using NLog; using NLog;
using NzbDrone.Common.Http; using NzbDrone.Common.Http;
@ -56,7 +57,7 @@ namespace NzbDrone.Core.Indexers.Gazelle
LogResponseContent = true LogResponseContent = true
}; };
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
var cookies = Cookies; var cookies = Cookies;

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http; using NzbDrone.Common.Http;
using NzbDrone.Common.Serializer; using NzbDrone.Common.Serializer;
@ -50,7 +51,7 @@ namespace NzbDrone.Core.Indexers.HDBits
.Resource("/api/torrents") .Resource("/api/torrents")
.Build(); .Build();
request.Method = HttpMethod.POST; request.Method = HttpMethod.Post;
const string appJson = "application/json"; const string appJson = "application/json";
request.Headers.Accept = appJson; request.Headers.Accept = appJson;
request.Headers.ContentType = appJson; request.Headers.ContentType = appJson;

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -57,7 +58,7 @@ namespace NzbDrone.Core.Indexers.Definitions
AllowAutoRedirect = true AllowAutoRedirect = true
}; };
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
var cookies = Cookies; var cookies = Cookies;

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using AngleSharp.Html.Parser; using AngleSharp.Html.Parser;
@ -52,7 +53,7 @@ namespace NzbDrone.Core.Indexers.Definitions
LogResponseContent = true LogResponseContent = true
}; };
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
var cookies = Cookies; var cookies = Cookies;

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using AngleSharp.Html.Parser; using AngleSharp.Html.Parser;
using FluentValidation; using FluentValidation;
@ -54,7 +55,7 @@ namespace NzbDrone.Core.Indexers.Definitions
LogResponseContent = true LogResponseContent = true
}; };
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
var cookies = Cookies; var cookies = Cookies;

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Globalization; using System.Globalization;
using System.Net.Http;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -53,7 +54,7 @@ namespace NzbDrone.Core.Indexers.Definitions
LogResponseContent = true LogResponseContent = true
}; };
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
var cookies = Cookies; var cookies = Cookies;

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net.Http;
using System.Xml; using System.Xml;
using System.Xml.Linq; using System.Xml.Linq;
using NLog; using NLog;
@ -50,7 +51,7 @@ namespace NzbDrone.Core.Indexers.Newznab
var request = new HttpRequest(url, HttpAccept.Rss); var request = new HttpRequest(url, HttpAccept.Rss);
request.AllowAutoRedirect = true; request.AllowAutoRedirect = true;
request.Method = HttpMethod.GET; request.Method = HttpMethod.Get;
HttpResponse response; HttpResponse response;

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -79,7 +80,7 @@ namespace NzbDrone.Core.Indexers.Definitions
{ {
LogResponseContent = true, LogResponseContent = true,
AllowAutoRedirect = true, AllowAutoRedirect = true,
Method = HttpMethod.POST Method = HttpMethod.Post
}; };
var authLoginCheckRequest = requestBuilder3 var authLoginCheckRequest = requestBuilder3

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net.Http;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -52,7 +53,7 @@ namespace NzbDrone.Core.Indexers.Definitions
{ {
LogResponseContent = true, LogResponseContent = true,
AllowAutoRedirect = true, AllowAutoRedirect = true,
Method = HttpMethod.POST Method = HttpMethod.Post
}; };
var authLoginRequest = requestBuilder var authLoginRequest = requestBuilder

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -59,7 +60,7 @@ namespace NzbDrone.Core.Indexers.Definitions
var loginPage = await ExecuteAuth(new HttpRequest(Settings.BaseUrl + "login.php")); var loginPage = await ExecuteAuth(new HttpRequest(Settings.BaseUrl + "login.php"));
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
requestBuilder.SetCookies(loginPage.GetCookies()); requestBuilder.SetCookies(loginPage.GetCookies());

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using AngleSharp.Html.Parser; using AngleSharp.Html.Parser;
using FluentValidation; using FluentValidation;
@ -58,7 +59,7 @@ namespace NzbDrone.Core.Indexers.Definitions
var loginPage = await ExecuteAuth(new HttpRequest(Settings.BaseUrl + "login.php")); var loginPage = await ExecuteAuth(new HttpRequest(Settings.BaseUrl + "login.php"));
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
requestBuilder.SetCookies(loginPage.GetCookies()); requestBuilder.SetCookies(loginPage.GetCookies());

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -57,7 +58,7 @@ namespace NzbDrone.Core.Indexers.Definitions
AllowAutoRedirect = true AllowAutoRedirect = true
}; };
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
var cookies = Cookies; var cookies = Cookies;

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Net.Mime; using System.Net.Mime;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -75,7 +76,7 @@ namespace NzbDrone.Core.Indexers.Definitions
{ {
LogResponseContent = true, LogResponseContent = true,
AllowAutoRedirect = true, AllowAutoRedirect = true,
Method = HttpMethod.POST, Method = HttpMethod.Post,
}; };
var request = requestBuilder.Build(); var request = requestBuilder.Build();

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -57,7 +58,7 @@ namespace NzbDrone.Core.Indexers.Definitions
{ {
var requestBuilder = new HttpRequestBuilder(string.Format("{0}/{1}", Settings.BaseUrl.TrimEnd('/'), "checkpoint/API")) var requestBuilder = new HttpRequestBuilder(string.Format("{0}/{1}", Settings.BaseUrl.TrimEnd('/'), "checkpoint/API"))
{ {
Method = HttpMethod.POST, Method = HttpMethod.Post,
LogResponseContent = true, LogResponseContent = true,
AllowAutoRedirect = true AllowAutoRedirect = true
}; };
@ -77,7 +78,7 @@ namespace NzbDrone.Core.Indexers.Definitions
var requestBuilder2 = new HttpRequestBuilder(string.Format("{0}/{1}", Settings.BaseUrl.TrimEnd('/'), "checkpoint/")) var requestBuilder2 = new HttpRequestBuilder(string.Format("{0}/{1}", Settings.BaseUrl.TrimEnd('/'), "checkpoint/"))
{ {
Method = HttpMethod.POST, Method = HttpMethod.Post,
LogResponseContent = true, LogResponseContent = true,
AllowAutoRedirect = true AllowAutoRedirect = true
}; };

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -59,7 +60,7 @@ namespace NzbDrone.Core.Indexers.Definitions
AllowAutoRedirect = true AllowAutoRedirect = true
}; };
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
var cookies = Cookies; var cookies = Cookies;

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using FluentValidation; using FluentValidation;
@ -54,7 +55,7 @@ namespace NzbDrone.Core.Indexers.Definitions
LogResponseContent = true LogResponseContent = true
}; };
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
var cookies = Cookies; var cookies = Cookies;

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using AngleSharp.Html.Parser; using AngleSharp.Html.Parser;
@ -63,7 +64,7 @@ namespace NzbDrone.Core.Indexers.Definitions
var json1 = JObject.Parse(loginPage.Content); var json1 = JObject.Parse(loginPage.Content);
var captchaSelection = json1["images"][0]["hash"]; var captchaSelection = json1["images"][0]["hash"];
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
requestBuilder.SetCookies(loginPage.GetCookies()); requestBuilder.SetCookies(loginPage.GetCookies());

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Security.Cryptography; using System.Security.Cryptography;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
@ -79,7 +80,7 @@ namespace NzbDrone.Core.Indexers.Definitions
LogResponseContent = true LogResponseContent = true
}; };
requestBuilder.Method = HttpMethod.POST; requestBuilder.Method = HttpMethod.Post;
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
requestBuilder.SetCookies(loginPage.GetCookies()); requestBuilder.SetCookies(loginPage.GetCookies());
@ -102,7 +103,7 @@ namespace NzbDrone.Core.Indexers.Definitions
LogResponseContent = true LogResponseContent = true
}; };
requestBuilder2.Method = HttpMethod.POST; requestBuilder2.Method = HttpMethod.Post;
requestBuilder2.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15); requestBuilder2.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
requestBuilder2.SetCookies(response.GetCookies()); requestBuilder2.SetCookies(response.GetCookies());

@ -1,3 +1,4 @@
using System.Net.Http;
using NLog; using NLog;
using NzbDrone.Common.Http; using NzbDrone.Common.Http;
using NzbDrone.Common.Serializer; using NzbDrone.Common.Serializer;
@ -29,7 +30,7 @@ namespace NzbDrone.Core.Notifications.Discord
.Accept(HttpAccept.Json) .Accept(HttpAccept.Json)
.Build(); .Build();
request.Method = HttpMethod.POST; request.Method = HttpMethod.Post;
request.Headers.ContentType = "application/json"; request.Headers.ContentType = "application/json";
request.SetContent(payload.ToJson()); request.SetContent(payload.ToJson());

@ -1,4 +1,5 @@
using System; using System;
using System.Net.Http;
using FluentValidation.Results; using FluentValidation.Results;
using NLog; using NLog;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
@ -27,7 +28,7 @@ namespace NzbDrone.Core.Notifications.Join
public void SendNotification(string title, string message, JoinSettings settings) public void SendNotification(string title, string message, JoinSettings settings)
{ {
var method = HttpMethod.GET; var method = HttpMethod.Get;
try try
{ {

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http;
using FluentValidation.Results; using FluentValidation.Results;
using NLog; using NLog;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
@ -100,7 +101,7 @@ namespace NzbDrone.Core.Notifications.PushBullet
var request = requestBuilder.Build(); var request = requestBuilder.Build();
request.Method = HttpMethod.GET; request.Method = HttpMethod.Get;
request.AddBasicAuthentication(settings.ApiKey, string.Empty); request.AddBasicAuthentication(settings.ApiKey, string.Empty);
var response = _httpClient.Execute(request); var response = _httpClient.Execute(request);

@ -1,4 +1,5 @@
using System.Net; using System.Net;
using System.Net.Http;
using NzbDrone.Common.Http; using NzbDrone.Common.Http;
using NzbDrone.Common.Serializer; using NzbDrone.Common.Serializer;
@ -22,7 +23,7 @@ namespace NzbDrone.Core.Notifications.SendGrid
{ {
try try
{ {
var request = BuildRequest(settings, "mail/send", HttpMethod.POST); var request = BuildRequest(settings, "mail/send", HttpMethod.Post);
var payload = new SendGridPayload var payload = new SendGridPayload
{ {

@ -1,3 +1,4 @@
using System.Net.Http;
using NLog; using NLog;
using NzbDrone.Common.Http; using NzbDrone.Common.Http;
using NzbDrone.Common.Serializer; using NzbDrone.Common.Serializer;
@ -29,7 +30,7 @@ namespace NzbDrone.Core.Notifications.Slack
.Accept(HttpAccept.Json) .Accept(HttpAccept.Json)
.Build(); .Build();
request.Method = HttpMethod.POST; request.Method = HttpMethod.Post;
request.Headers.ContentType = "application/json"; request.Headers.ContentType = "application/json";
request.SetContent(payload.ToJson()); request.SetContent(payload.ToJson());

@ -1,10 +1,11 @@
using System.Net.Http;
using NzbDrone.Common.Http; using NzbDrone.Common.Http;
namespace NzbDrone.Core.Notifications.Webhook namespace NzbDrone.Core.Notifications.Webhook
{ {
public enum WebhookMethod public enum WebhookMethod
{ {
POST = HttpMethod.POST, POST = 1,
PUT = HttpMethod.PUT PUT = 2
} }
} }

@ -1,3 +1,5 @@
using System;
using System.Net.Http;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http; using NzbDrone.Common.Http;
using NzbDrone.Common.Serializer; using NzbDrone.Common.Serializer;
@ -26,7 +28,13 @@ namespace NzbDrone.Core.Notifications.Webhook
.Accept(HttpAccept.Json) .Accept(HttpAccept.Json)
.Build(); .Build();
request.Method = (HttpMethod)settings.Method; request.Method = settings.Method switch
{
(int)WebhookMethod.POST => HttpMethod.Post,
(int)WebhookMethod.PUT => HttpMethod.Put,
_ => throw new ArgumentOutOfRangeException($"Invalid Webhook method {settings.Method}")
};
request.Headers.ContentType = "application/json"; request.Headers.ContentType = "application/json";
request.SetContent(body.ToJson()); request.SetContent(body.ToJson());

Loading…
Cancel
Save