Fixed: Third-party clients calling api without Accept header

pull/6/head
Taloth Saldono 5 years ago committed by ta264
parent 17c9fc419c
commit cc008fb21d

@ -5,10 +5,11 @@ using NLog;
using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Instrumentation; using NzbDrone.Common.Instrumentation;
using NzbDrone.Core.Instrumentation; using NzbDrone.Core.Instrumentation;
using NzbDrone.Core.Lifecycle;
using NzbDrone.Core.Messaging.Events;
using Lidarr.Http.Extensions.Pipelines; using Lidarr.Http.Extensions.Pipelines;
using TinyIoC; using TinyIoC;
using Nancy;
using System;
using Nancy.Responses.Negotiation;
namespace Lidarr.Http namespace Lidarr.Http
{ {
@ -51,6 +52,18 @@ namespace Lidarr.Http
return _tinyIoCContainer; return _tinyIoCContainer;
} }
protected override Func<ITypeCatalog, NancyInternalConfiguration> InternalConfiguration
{
get
{
// We don't support Xml Serialization atm
return NancyInternalConfiguration.WithOverrides(x => {
x.ResponseProcessors.Remove(typeof(ViewProcessor));
x.ResponseProcessors.Remove(typeof(XmlProcessor));
});
}
}
public override void Configure(Nancy.Configuration.INancyEnvironment environment) public override void Configure(Nancy.Configuration.INancyEnvironment environment)
{ {
environment.Diagnostics(password: @"password"); environment.Diagnostics(password: @"password");

@ -0,0 +1,51 @@
using System.Net;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Common.Extensions;
using NzbDrone.Integration.Test.Client;
using RestSharp;
namespace NzbDrone.Integration.Test
{
[TestFixture]
public class GenericApiFixture : IntegrationTest
{
[TestCase("application/json")]
[TestCase("text/html, application/json")]
[TestCase("application/xml, application/json")]
[TestCase("text/html, */*")]
[TestCase("*/*")]
[TestCase("")]
public void should_get_json_with_accept_header(string header)
{
var request = new RestRequest("system/status")
{
RequestFormat = DataFormat.None
};
request.AddHeader("Accept", header);
var response = RestClient.Execute(request);
response.StatusCode.Should().Be(HttpStatusCode.OK);
response.ContentType.Should().Be("application/json; charset=utf-8");
}
[TestCase("application/xml")]
[TestCase("text/html")]
[TestCase("application/junk")]
public void should_get_unacceptable_with_accept_header(string header)
{
var request = new RestRequest("system/status")
{
RequestFormat = DataFormat.None
};
request.AddHeader("Accept", header);
var response = RestClient.Execute(request);
response.StatusCode.Should().Be(HttpStatusCode.NotAcceptable);
}
}
}
Loading…
Cancel
Save