Updated error message if skyhook and other services respond with html content.
closes #2817
This commit is contained in:
parent
0d22f9ec29
commit
ae6d920e2a
|
@ -267,6 +267,7 @@ namespace NzbDrone.Common.Http
|
||||||
public HttpResponse<T> Get<T>(HttpRequest request) where T : new()
|
public HttpResponse<T> Get<T>(HttpRequest request) where T : new()
|
||||||
{
|
{
|
||||||
var response = Get(request);
|
var response = Get(request);
|
||||||
|
CheckResponseContentType(response);
|
||||||
return new HttpResponse<T>(response);
|
return new HttpResponse<T>(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -285,7 +286,16 @@ namespace NzbDrone.Common.Http
|
||||||
public HttpResponse<T> Post<T>(HttpRequest request) where T : new()
|
public HttpResponse<T> Post<T>(HttpRequest request) where T : new()
|
||||||
{
|
{
|
||||||
var response = Post(request);
|
var response = Post(request);
|
||||||
|
CheckResponseContentType(response);
|
||||||
return new HttpResponse<T>(response);
|
return new HttpResponse<T>(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void CheckResponseContentType(HttpResponse response)
|
||||||
|
{
|
||||||
|
if (response.Headers.ContentType != null && response.Headers.ContentType.Contains("text/html"))
|
||||||
|
{
|
||||||
|
throw new UnexpectedHtmlContentException(response);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,13 +7,19 @@ namespace NzbDrone.Common.Http
|
||||||
public HttpRequest Request { get; private set; }
|
public HttpRequest Request { get; private set; }
|
||||||
public HttpResponse Response { get; private set; }
|
public HttpResponse Response { get; private set; }
|
||||||
|
|
||||||
public HttpException(HttpRequest request, HttpResponse response)
|
public HttpException(HttpRequest request, HttpResponse response, string message)
|
||||||
: base(string.Format("HTTP request failed: [{0}:{1}] [{2}] at [{3}]", (int)response.StatusCode, response.StatusCode, request.Method, request.Url))
|
: base(message)
|
||||||
{
|
{
|
||||||
Request = request;
|
Request = request;
|
||||||
Response = response;
|
Response = response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public HttpException(HttpRequest request, HttpResponse response)
|
||||||
|
: this(request, response, string.Format("HTTP request failed: [{0}:{1}] [{2}] at [{3}]", (int)response.StatusCode, response.StatusCode, request.Method, request.Url))
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public HttpException(HttpResponse response)
|
public HttpException(HttpResponse response)
|
||||||
: this(response.Request, response)
|
: this(response.Request, response)
|
||||||
{
|
{
|
||||||
|
@ -30,4 +36,4 @@ namespace NzbDrone.Common.Http
|
||||||
return base.ToString();
|
return base.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace NzbDrone.Common.Http
|
||||||
|
{
|
||||||
|
public class UnexpectedHtmlContentException : HttpException
|
||||||
|
{
|
||||||
|
public UnexpectedHtmlContentException(HttpResponse response)
|
||||||
|
: base(response.Request, response, $"Site responded with browser content instead of api data. This disruption may be temporary, please try again later. [{response.Request.Url}]")
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -177,6 +177,7 @@
|
||||||
<Compile Include="Http\HttpRequestBuilderFactory.cs" />
|
<Compile Include="Http\HttpRequestBuilderFactory.cs" />
|
||||||
<Compile Include="Http\Proxy\ProxyType.cs" />
|
<Compile Include="Http\Proxy\ProxyType.cs" />
|
||||||
<Compile Include="Http\TlsFailureException.cs" />
|
<Compile Include="Http\TlsFailureException.cs" />
|
||||||
|
<Compile Include="Http\UnexpectedHtmlContentException.cs" />
|
||||||
<Compile Include="Http\TooManyRequestsException.cs" />
|
<Compile Include="Http\TooManyRequestsException.cs" />
|
||||||
<Compile Include="Extensions\IEnumerableExtensions.cs" />
|
<Compile Include="Extensions\IEnumerableExtensions.cs" />
|
||||||
<Compile Include="Http\UserAgentBuilder.cs" />
|
<Compile Include="Http\UserAgentBuilder.cs" />
|
||||||
|
|
Loading…
Reference in New Issue