mirror of
https://github.com/Radarr/Radarr.git
synced 2024-11-04 10:02:40 +01:00
fixed disk scan scheduler.
This commit is contained in:
parent
42849d3276
commit
687f8d9384
@ -25,7 +25,7 @@ private CommandResource RunCommand(CommandResource resource)
|
|||||||
var commandType =
|
var commandType =
|
||||||
_container.GetImplementations(typeof(ICommand))
|
_container.GetImplementations(typeof(ICommand))
|
||||||
.Single(c => c.Name.Replace("Command", "")
|
.Single(c => c.Name.Replace("Command", "")
|
||||||
.Equals(resource.Command, StringComparison.InvariantCultureIgnoreCase));
|
.Equals(resource.Command, StringComparison.InvariantCultureIgnoreCase));
|
||||||
|
|
||||||
|
|
||||||
var command = Request.Body.FromJson<ICommand>(commandType);
|
var command = Request.Body.FromJson<ICommand>(commandType);
|
||||||
|
@ -8,14 +8,6 @@ namespace NzbDrone.Api.Extensions
|
|||||||
{
|
{
|
||||||
public class NancyJsonSerializer : ISerializer
|
public class NancyJsonSerializer : ISerializer
|
||||||
{
|
{
|
||||||
private readonly IJsonSerializer _jsonSerializer;
|
|
||||||
|
|
||||||
public NancyJsonSerializer(IJsonSerializer jsonSerializer)
|
|
||||||
{
|
|
||||||
_jsonSerializer = jsonSerializer;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public bool CanSerialize(string contentType)
|
public bool CanSerialize(string contentType)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
@ -23,7 +15,7 @@ public bool CanSerialize(string contentType)
|
|||||||
|
|
||||||
public void Serialize<TModel>(string contentType, TModel model, Stream outputStream)
|
public void Serialize<TModel>(string contentType, TModel model, Stream outputStream)
|
||||||
{
|
{
|
||||||
_jsonSerializer.Serialize(model, outputStream);
|
Json.Serialize(model, outputStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<string> Extensions { get; private set; }
|
public IEnumerable<string> Extensions { get; private set; }
|
||||||
|
@ -2,15 +2,13 @@
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using Nancy;
|
using Nancy;
|
||||||
using Nancy.Responses;
|
using Nancy.Responses;
|
||||||
using NzbDrone.Common;
|
|
||||||
using NzbDrone.Common.Serializer;
|
using NzbDrone.Common.Serializer;
|
||||||
|
|
||||||
namespace NzbDrone.Api.Extensions
|
namespace NzbDrone.Api.Extensions
|
||||||
{
|
{
|
||||||
public static class JsonExtensions
|
public static class JsonExtensions
|
||||||
{
|
{
|
||||||
private static readonly JsonSerializer Serializer = new JsonSerializer();
|
private static readonly NancyJsonSerializer NancySerializer = new NancyJsonSerializer();
|
||||||
private static readonly NancyJsonSerializer NancySerializer = new NancyJsonSerializer(Serializer);
|
|
||||||
|
|
||||||
public static T FromJson<T>(this Stream body) where T : class, new()
|
public static T FromJson<T>(this Stream body) where T : class, new()
|
||||||
{
|
{
|
||||||
@ -22,7 +20,7 @@ public static T FromJson<T>(this Stream body, Type type)
|
|||||||
var reader = new StreamReader(body, true);
|
var reader = new StreamReader(body, true);
|
||||||
body.Position = 0;
|
body.Position = 0;
|
||||||
var value = reader.ReadToEnd();
|
var value = reader.ReadToEnd();
|
||||||
return (T)Serializer.Deserialize(value, type);
|
return (T)Json.Deserialize(value, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static JsonResponse<TModel> AsResponse<TModel>(this TModel model, HttpStatusCode statusCode = HttpStatusCode.OK)
|
public static JsonResponse<TModel> AsResponse<TModel>(this TModel model, HttpStatusCode statusCode = HttpStatusCode.OK)
|
||||||
|
@ -2,27 +2,20 @@
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using Microsoft.AspNet.SignalR.Json;
|
using Microsoft.AspNet.SignalR.Json;
|
||||||
using NzbDrone.Common.Composition;
|
using NzbDrone.Common.Composition;
|
||||||
|
using NzbDrone.Common.Serializer;
|
||||||
|
|
||||||
namespace NzbDrone.Api.SignalR
|
namespace NzbDrone.Api.SignalR
|
||||||
{
|
{
|
||||||
[Singleton]
|
[Singleton]
|
||||||
public class Serializer : IJsonSerializer
|
public class Serializer : IJsonSerializer
|
||||||
{
|
{
|
||||||
private readonly Common.Serializer.IJsonSerializer _nzbDroneSerializer;
|
private readonly JsonNetSerializer _signalRSerializer = new JsonNetSerializer();
|
||||||
private readonly JsonNetSerializer _signalRSerializer;
|
|
||||||
|
|
||||||
public Serializer(Common.Serializer.IJsonSerializer nzbDroneSerializer)
|
|
||||||
{
|
|
||||||
_signalRSerializer = new JsonNetSerializer();
|
|
||||||
_nzbDroneSerializer = nzbDroneSerializer;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Serialize(object value, TextWriter writer)
|
public void Serialize(object value, TextWriter writer)
|
||||||
{
|
{
|
||||||
if (value.GetType().FullName.StartsWith("NzbDrone"))
|
if (value.GetType().FullName.StartsWith("NzbDrone"))
|
||||||
{
|
{
|
||||||
_nzbDroneSerializer.Serialize(value, writer);
|
Json.Serialize(value, writer);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -35,7 +28,7 @@ public object Parse(string json, Type targetType)
|
|||||||
{
|
{
|
||||||
if (targetType.FullName.StartsWith("NzbDrone"))
|
if (targetType.FullName.StartsWith("NzbDrone"))
|
||||||
{
|
{
|
||||||
return _nzbDroneSerializer.Deserialize(json, targetType);
|
return Json.Deserialize(json, targetType);
|
||||||
}
|
}
|
||||||
|
|
||||||
return _signalRSerializer.Parse(json, targetType);
|
return _signalRSerializer.Parse(json, targetType);
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using Moq;
|
using Moq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Common.Messaging;
|
using NzbDrone.Common.Messaging;
|
||||||
@ -38,6 +39,17 @@ public void should_publish_command_to_executor()
|
|||||||
_executorA.Verify(c => c.Execute(commandA), Times.Once());
|
_executorA.Verify(c => c.Execute(commandA), Times.Once());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_publish_command_by_with_optional_arg_with_name()
|
||||||
|
{
|
||||||
|
Mocker.GetMock<IServiceFactory>().Setup(c => c.GetImplementations(typeof(ICommand)))
|
||||||
|
.Returns(new List<Type> { typeof(CommandA), typeof(CommandB) });
|
||||||
|
|
||||||
|
Subject.PublishCommand(typeof(CommandA).FullName);
|
||||||
|
_executorA.Verify(c => c.Execute(It.IsAny<CommandA>()), Times.Once());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_publish_to_incompatible_executor()
|
public void should_not_publish_to_incompatible_executor()
|
||||||
{
|
{
|
||||||
@ -64,7 +76,10 @@ public void broken_executor_should_throw_the_exception()
|
|||||||
|
|
||||||
public class CommandA : ICommand
|
public class CommandA : ICommand
|
||||||
{
|
{
|
||||||
|
public CommandA(int id = 0)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CommandB : ICommand
|
public class CommandB : ICommand
|
||||||
|
@ -5,7 +5,8 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IMessageAggregator
|
public interface IMessageAggregator
|
||||||
{
|
{
|
||||||
void PublishEvent<TEvent>(TEvent @event) where TEvent : IEvent;
|
void PublishEvent<TEvent>(TEvent @event) where TEvent : class, IEvent;
|
||||||
void PublishCommand<TCommand>(TCommand command) where TCommand : ICommand;
|
void PublishCommand<TCommand>(TCommand command) where TCommand : class, ICommand;
|
||||||
|
void PublishCommand(string commandType);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,8 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Common.Composition;
|
using NzbDrone.Common.Composition;
|
||||||
|
using NzbDrone.Common.EnsureThat;
|
||||||
|
using NzbDrone.Common.Serializer;
|
||||||
|
|
||||||
namespace NzbDrone.Common.Messaging
|
namespace NzbDrone.Common.Messaging
|
||||||
{
|
{
|
||||||
@ -18,8 +21,10 @@ public MessageAggregator(Logger logger, IServiceFactory serviceFactory)
|
|||||||
_serviceFactory = serviceFactory;
|
_serviceFactory = serviceFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PublishEvent<TEvent>(TEvent @event) where TEvent : IEvent
|
public void PublishEvent<TEvent>(TEvent @event) where TEvent : class ,IEvent
|
||||||
{
|
{
|
||||||
|
Ensure.That(() => @event).IsNotNull();
|
||||||
|
|
||||||
var eventName = GetEventName(@event.GetType());
|
var eventName = GetEventName(@event.GetType());
|
||||||
|
|
||||||
_logger.Trace("Publishing {0}", eventName);
|
_logger.Trace("Publishing {0}", eventName);
|
||||||
@ -63,8 +68,10 @@ private static string GetEventName(Type eventType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void PublishCommand<TCommand>(TCommand command) where TCommand : ICommand
|
public void PublishCommand<TCommand>(TCommand command) where TCommand : class, ICommand
|
||||||
{
|
{
|
||||||
|
Ensure.That(() => command).IsNotNull();
|
||||||
|
|
||||||
var handlerContract = typeof(IExecute<>).MakeGenericType(command.GetType());
|
var handlerContract = typeof(IExecute<>).MakeGenericType(command.GetType());
|
||||||
|
|
||||||
_logger.Trace("Publishing {0}", command.GetType().Name);
|
_logger.Trace("Publishing {0}", command.GetType().Name);
|
||||||
@ -75,7 +82,7 @@ public void PublishCommand<TCommand>(TCommand command) where TCommand : ICommand
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
handlerContract.GetMethod("Execute").Invoke(handler, new object[] {command});
|
handlerContract.GetMethod("Execute").Invoke(handler, new object[] { command });
|
||||||
PublishEvent(new CommandCompletedEvent(command));
|
PublishEvent(new CommandCompletedEvent(command));
|
||||||
}
|
}
|
||||||
catch (TargetInvocationException e)
|
catch (TargetInvocationException e)
|
||||||
@ -95,5 +102,15 @@ public void PublishCommand<TCommand>(TCommand command) where TCommand : ICommand
|
|||||||
|
|
||||||
_logger.Debug("{0} <- {1}", command.GetType().Name, handler.GetType().Name);
|
_logger.Debug("{0} <- {1}", command.GetType().Name, handler.GetType().Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void PublishCommand(string commandTypeName)
|
||||||
|
{
|
||||||
|
var commandType = _serviceFactory.GetImplementations(typeof(ICommand))
|
||||||
|
.Single(c => c.FullName.Equals(commandTypeName, StringComparison.InvariantCultureIgnoreCase));
|
||||||
|
|
||||||
|
//json.net is better at creating objects
|
||||||
|
var command = Json.Deserialize("{}", commandType);
|
||||||
|
PublishCommand((ICommand)command);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,7 @@
|
|||||||
<Compile Include="EnsureThat\Resources\ExceptionMessages.Designer.cs" />
|
<Compile Include="EnsureThat\Resources\ExceptionMessages.Designer.cs" />
|
||||||
<Compile Include="EnsureThat\StringExtensions.cs" />
|
<Compile Include="EnsureThat\StringExtensions.cs" />
|
||||||
<Compile Include="EnsureThat\TypeParam.cs" />
|
<Compile Include="EnsureThat\TypeParam.cs" />
|
||||||
<Compile Include="Serializer\JsonSerializer.cs" />
|
<Compile Include="Serializer\Json.cs" />
|
||||||
<Compile Include="Messaging\CommandCompletedEvent.cs" />
|
<Compile Include="Messaging\CommandCompletedEvent.cs" />
|
||||||
<Compile Include="Messaging\CommandStartedEvent.cs" />
|
<Compile Include="Messaging\CommandStartedEvent.cs" />
|
||||||
<Compile Include="Messaging\CommandFailedEvent.cs" />
|
<Compile Include="Messaging\CommandFailedEvent.cs" />
|
||||||
|
58
NzbDrone.Common/Serializer/Json.cs
Normal file
58
NzbDrone.Common/Serializer/Json.cs
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Converters;
|
||||||
|
using Newtonsoft.Json.Serialization;
|
||||||
|
|
||||||
|
namespace NzbDrone.Common.Serializer
|
||||||
|
{
|
||||||
|
public static class Json
|
||||||
|
{
|
||||||
|
private static readonly JsonSerializer JsonNetSerializer;
|
||||||
|
|
||||||
|
|
||||||
|
static Json()
|
||||||
|
{
|
||||||
|
JsonNetSerializer = new JsonSerializer()
|
||||||
|
{
|
||||||
|
DateTimeZoneHandling = DateTimeZoneHandling.Utc,
|
||||||
|
NullValueHandling = NullValueHandling.Ignore,
|
||||||
|
Formatting = Formatting.Indented,
|
||||||
|
DefaultValueHandling = DefaultValueHandling.Include,
|
||||||
|
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
||||||
|
};
|
||||||
|
|
||||||
|
JsonNetSerializer.Converters.Add(new StringEnumConverter { CamelCaseText = true });
|
||||||
|
}
|
||||||
|
|
||||||
|
public static T Deserialize<T>(string json) where T : class, new()
|
||||||
|
{
|
||||||
|
return JsonConvert.DeserializeObject<T>(json);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static object Deserialize(string json, Type type)
|
||||||
|
{
|
||||||
|
return JsonConvert.DeserializeObject(json, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string Serialize(object obj)
|
||||||
|
{
|
||||||
|
return JsonConvert.SerializeObject(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void Serialize<TModel>(TModel model, TextWriter outputStream)
|
||||||
|
{
|
||||||
|
var jsonTextWriter = new JsonTextWriter(outputStream);
|
||||||
|
JsonNetSerializer.Serialize(jsonTextWriter, model);
|
||||||
|
jsonTextWriter.Flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Serialize<TModel>(TModel model, Stream outputStream)
|
||||||
|
{
|
||||||
|
Serialize(model, new StreamWriter(outputStream));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -1,66 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
using Newtonsoft.Json.Converters;
|
|
||||||
using Newtonsoft.Json.Serialization;
|
|
||||||
|
|
||||||
namespace NzbDrone.Common.Serializer
|
|
||||||
{
|
|
||||||
public interface IJsonSerializer
|
|
||||||
{
|
|
||||||
T Deserialize<T>(string json) where T : class, new();
|
|
||||||
string Serialize(object obj);
|
|
||||||
void Serialize<TModel>(TModel model, TextWriter textWriter);
|
|
||||||
void Serialize<TModel>(TModel model, Stream outputStream);
|
|
||||||
object Deserialize(string json, Type type);
|
|
||||||
}
|
|
||||||
|
|
||||||
public class JsonSerializer : IJsonSerializer
|
|
||||||
{
|
|
||||||
private readonly Newtonsoft.Json.JsonSerializer _jsonNetSerializer;
|
|
||||||
|
|
||||||
public JsonSerializer()
|
|
||||||
{
|
|
||||||
_jsonNetSerializer = new Newtonsoft.Json.JsonSerializer()
|
|
||||||
{
|
|
||||||
DateTimeZoneHandling = DateTimeZoneHandling.Utc,
|
|
||||||
NullValueHandling = NullValueHandling.Ignore,
|
|
||||||
Formatting = Formatting.Indented,
|
|
||||||
DefaultValueHandling = DefaultValueHandling.Include,
|
|
||||||
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
|
||||||
};
|
|
||||||
|
|
||||||
_jsonNetSerializer.Converters.Add(new StringEnumConverter { CamelCaseText = true });
|
|
||||||
}
|
|
||||||
|
|
||||||
public T Deserialize<T>(string json) where T : class, new()
|
|
||||||
{
|
|
||||||
return JsonConvert.DeserializeObject<T>(json);
|
|
||||||
}
|
|
||||||
|
|
||||||
public object Deserialize(string json, Type type)
|
|
||||||
{
|
|
||||||
return JsonConvert.DeserializeObject(json, type);
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Serialize(object obj)
|
|
||||||
{
|
|
||||||
return JsonConvert.SerializeObject(obj);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void Serialize<TModel>(TModel model, TextWriter outputStream)
|
|
||||||
{
|
|
||||||
var jsonTextWriter = new JsonTextWriter(outputStream);
|
|
||||||
_jsonNetSerializer.Serialize(jsonTextWriter, model);
|
|
||||||
jsonTextWriter.Flush();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Serialize<TModel>(TModel model, Stream outputStream)
|
|
||||||
{
|
|
||||||
Serialize(model, new StreamWriter(outputStream));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -10,6 +10,7 @@ public interface IServiceFactory
|
|||||||
T Build<T>() where T : class;
|
T Build<T>() where T : class;
|
||||||
IEnumerable<T> BuildAll<T>() where T : class;
|
IEnumerable<T> BuildAll<T>() where T : class;
|
||||||
object Build(Type contract);
|
object Build(Type contract);
|
||||||
|
IEnumerable<Type> GetImplementations(Type contract);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ServiceFactory : IServiceFactory
|
public class ServiceFactory : IServiceFactory
|
||||||
@ -35,5 +36,10 @@ public object Build(Type contract)
|
|||||||
{
|
{
|
||||||
return _container.Resolve(contract);
|
return _container.Resolve(contract);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IEnumerable<Type> GetImplementations(Type contract)
|
||||||
|
{
|
||||||
|
return _container.GetImplementations(contract);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -41,8 +41,8 @@ public class TypeWithNoMappableProperties
|
|||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
MapRepository.Instance.RegisterTypeConverter(typeof(List<EmbeddedType>), new EmbeddedDocumentConverter(new JsonSerializer()));
|
MapRepository.Instance.RegisterTypeConverter(typeof(List<EmbeddedType>), new EmbeddedDocumentConverter());
|
||||||
MapRepository.Instance.RegisterTypeConverter(typeof(EmbeddedType), new EmbeddedDocumentConverter(new JsonSerializer()));
|
MapRepository.Instance.RegisterTypeConverter(typeof(EmbeddedType), new EmbeddedDocumentConverter());
|
||||||
MapRepository.Instance.RegisterTypeConverter(typeof(Int32), new Int32Converter());
|
MapRepository.Instance.RegisterTypeConverter(typeof(Int32), new Int32Converter());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -17,14 +17,12 @@ public class DailySeriesDataProxy : IDailySeriesDataProxy
|
|||||||
{
|
{
|
||||||
private readonly IHttpProvider _httpProvider;
|
private readonly IHttpProvider _httpProvider;
|
||||||
private readonly IConfigService _configService;
|
private readonly IConfigService _configService;
|
||||||
private readonly IJsonSerializer _jsonSerializer;
|
|
||||||
private readonly Logger _logger;
|
private readonly Logger _logger;
|
||||||
|
|
||||||
public DailySeriesDataProxy(IHttpProvider httpProvider, IConfigService configService, IJsonSerializer jsonSerializer, Logger logger)
|
public DailySeriesDataProxy(IHttpProvider httpProvider, IConfigService configService, Logger logger)
|
||||||
{
|
{
|
||||||
_httpProvider = httpProvider;
|
_httpProvider = httpProvider;
|
||||||
_configService = configService;
|
_configService = configService;
|
||||||
_jsonSerializer = jsonSerializer;
|
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,7 +32,7 @@ public IEnumerable<int> GetDailySeriesIds()
|
|||||||
{
|
{
|
||||||
var dailySeriesIds = _httpProvider.DownloadString(_configService.ServiceRootUrl + "/DailySeries/AllIds");
|
var dailySeriesIds = _httpProvider.DownloadString(_configService.ServiceRootUrl + "/DailySeries/AllIds");
|
||||||
|
|
||||||
var seriesIds = _jsonSerializer.Deserialize<List<int>>(dailySeriesIds);
|
var seriesIds = Json.Deserialize<List<int>>(dailySeriesIds);
|
||||||
|
|
||||||
return seriesIds;
|
return seriesIds;
|
||||||
}
|
}
|
||||||
|
@ -14,19 +14,19 @@ public class SceneMappingProxy : ISceneMappingProxy
|
|||||||
{
|
{
|
||||||
private readonly IHttpProvider _httpProvider;
|
private readonly IHttpProvider _httpProvider;
|
||||||
private readonly IConfigService _configService;
|
private readonly IConfigService _configService;
|
||||||
private readonly IJsonSerializer _jsonSerializer;
|
|
||||||
|
|
||||||
public SceneMappingProxy(IHttpProvider httpProvider, IConfigService configService, IJsonSerializer jsonSerializer)
|
public SceneMappingProxy(IHttpProvider httpProvider, IConfigService configService)
|
||||||
{
|
{
|
||||||
_httpProvider = httpProvider;
|
_httpProvider = httpProvider;
|
||||||
_configService = configService;
|
_configService = configService;
|
||||||
_jsonSerializer = jsonSerializer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<SceneMapping> Fetch()
|
public List<SceneMapping> Fetch()
|
||||||
{
|
{
|
||||||
var mappingsJson = _httpProvider.DownloadString(_configService.ServiceRootUrl + "/SceneMapping/Active");
|
var mappingsJson = _httpProvider.DownloadString(_configService.ServiceRootUrl + "/SceneMapping/Active");
|
||||||
return _jsonSerializer.Deserialize<List<SceneMapping>>(mappingsJson);
|
return Json.Deserialize<List<SceneMapping>>(mappingsJson);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -8,12 +8,6 @@ namespace NzbDrone.Core.Datastore.Converters
|
|||||||
{
|
{
|
||||||
public class EmbeddedDocumentConverter : IConverter
|
public class EmbeddedDocumentConverter : IConverter
|
||||||
{
|
{
|
||||||
private readonly IJsonSerializer _serializer;
|
|
||||||
|
|
||||||
public EmbeddedDocumentConverter(IJsonSerializer serializer)
|
|
||||||
{
|
|
||||||
_serializer = serializer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public object FromDB(ColumnMap map, object dbValue)
|
public object FromDB(ColumnMap map, object dbValue)
|
||||||
{
|
{
|
||||||
@ -29,14 +23,14 @@ public object FromDB(ColumnMap map, object dbValue)
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _serializer.Deserialize(stringValue, map.FieldType);
|
return Json.Deserialize(stringValue, map.FieldType);
|
||||||
}
|
}
|
||||||
|
|
||||||
public object ToDB(object clrValue)
|
public object ToDB(object clrValue)
|
||||||
{
|
{
|
||||||
if (clrValue == null) return null;
|
if (clrValue == null) return null;
|
||||||
|
|
||||||
var json = _serializer.Serialize(clrValue);
|
var json = Json.Serialize(clrValue);
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ private static void RegisterEmbeddedConverter()
|
|||||||
.Where(c => c.GetInterfaces().Any(i => i == typeof(IEmbeddedDocument)));
|
.Where(c => c.GetInterfaces().Any(i => i == typeof(IEmbeddedDocument)));
|
||||||
|
|
||||||
|
|
||||||
var embeddedConvertor = new EmbeddedDocumentConverter(new JsonSerializer());
|
var embeddedConvertor = new EmbeddedDocumentConverter();
|
||||||
var genericListDefinition = typeof(List<>).GetGenericTypeDefinition();
|
var genericListDefinition = typeof(List<>).GetGenericTypeDefinition();
|
||||||
foreach (var embeddedType in embeddedTypes)
|
foreach (var embeddedType in embeddedTypes)
|
||||||
{
|
{
|
||||||
|
@ -9,7 +9,7 @@ namespace NzbDrone.Core.Indexers
|
|||||||
|
|
||||||
public TSetting ImportSettingsFromJson(string json)
|
public TSetting ImportSettingsFromJson(string json)
|
||||||
{
|
{
|
||||||
Settings = new JsonSerializer().Deserialize<TSetting>(json) ?? new TSetting();
|
Settings = Json.Deserialize<TSetting>(json) ?? new TSetting();
|
||||||
|
|
||||||
return Settings;
|
return Settings;
|
||||||
}
|
}
|
||||||
|
@ -8,12 +8,6 @@ namespace NzbDrone.Core.Indexers.Newznab
|
|||||||
{
|
{
|
||||||
public class Newznab : IndexerWithSetting<NewznabSettings>
|
public class Newznab : IndexerWithSetting<NewznabSettings>
|
||||||
{
|
{
|
||||||
private readonly IJsonSerializer _jsonSerializer;
|
|
||||||
|
|
||||||
public Newznab()
|
|
||||||
{
|
|
||||||
_jsonSerializer = new JsonSerializer();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public override IEnumerable<IndexerDefinition> DefaultDefinitions
|
public override IEnumerable<IndexerDefinition> DefaultDefinitions
|
||||||
@ -54,7 +48,7 @@ public override IEnumerable<IndexerDefinition> DefaultDefinitions
|
|||||||
|
|
||||||
private string GetSettings(string url)
|
private string GetSettings(string url)
|
||||||
{
|
{
|
||||||
return _jsonSerializer.Serialize(new NewznabSettings { Url = url });
|
return Json.Serialize(new NewznabSettings { Url = url });
|
||||||
}
|
}
|
||||||
|
|
||||||
public override IEnumerable<string> RecentFeed
|
public override IEnumerable<string> RecentFeed
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
using NzbDrone.Common.Messaging;
|
using NzbDrone.Common.Messaging;
|
||||||
using NzbDrone.Core.Indexers;
|
using NzbDrone.Core.Indexers;
|
||||||
using NzbDrone.Core.Lifecycle;
|
using NzbDrone.Core.Lifecycle;
|
||||||
|
using NzbDrone.Core.MediaFiles.Commands;
|
||||||
using NzbDrone.Core.Providers;
|
using NzbDrone.Core.Providers;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Jobs
|
namespace NzbDrone.Core.Jobs
|
||||||
@ -36,7 +37,8 @@ public void Handle(ApplicationStartedEvent message)
|
|||||||
var defaultTasks = new[]
|
var defaultTasks = new[]
|
||||||
{
|
{
|
||||||
new ScheduledTask{ Interval = 25, TypeName = typeof(RssSyncCommand).FullName},
|
new ScheduledTask{ Interval = 25, TypeName = typeof(RssSyncCommand).FullName},
|
||||||
new ScheduledTask{ Interval = 24*60, TypeName = typeof(UpdateXemMappings).FullName}
|
new ScheduledTask{ Interval = 12*60, TypeName = typeof(UpdateXemMappings).FullName},
|
||||||
|
new ScheduledTask{ Interval = 6*60, TypeName = typeof(DiskScanCommand).FullName}
|
||||||
};
|
};
|
||||||
|
|
||||||
var currentTasks = _scheduledTaskRepository.All();
|
var currentTasks = _scheduledTaskRepository.All();
|
||||||
|
@ -15,7 +15,6 @@ namespace NzbDrone.Integration.Test.Client
|
|||||||
private readonly string _resource;
|
private readonly string _resource;
|
||||||
|
|
||||||
private readonly Logger _logger;
|
private readonly Logger _logger;
|
||||||
private readonly JsonSerializer _jsonSerializer;
|
|
||||||
|
|
||||||
public ClientBase(IRestClient restClient, string resource = null)
|
public ClientBase(IRestClient restClient, string resource = null)
|
||||||
{
|
{
|
||||||
@ -27,10 +26,6 @@ public ClientBase(IRestClient restClient, string resource = null)
|
|||||||
_restClient = restClient;
|
_restClient = restClient;
|
||||||
_resource = resource;
|
_resource = resource;
|
||||||
|
|
||||||
_jsonSerializer = new JsonSerializer();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
_logger = LogManager.GetLogger("REST");
|
_logger = LogManager.GetLogger("REST");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,7 +104,7 @@ public void Delete(IRestRequest request, HttpStatusCode statusCode = HttpStatusC
|
|||||||
|
|
||||||
response.ErrorMessage.Should().BeBlank();
|
response.ErrorMessage.Should().BeBlank();
|
||||||
|
|
||||||
return _jsonSerializer.Deserialize<T>(response.Content);
|
return Json.Deserialize<T>(response.Content);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Common;
|
|
||||||
using NzbDrone.Common.Serializer;
|
using NzbDrone.Common.Serializer;
|
||||||
using NzbDrone.Test.Common;
|
using NzbDrone.Test.Common;
|
||||||
|
|
||||||
namespace NzbDrone.Libraries.Test.Json
|
namespace NzbDrone.Libraries.Test.JsonTests
|
||||||
{
|
{
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class JsonFixture : TestBase<JsonSerializer>
|
public class JsonFixture : TestBase
|
||||||
{
|
{
|
||||||
public class TypeWithNumbers
|
public class TypeWithNumbers
|
||||||
{
|
{
|
||||||
@ -18,9 +17,9 @@ public void should_be_able_to_deserialize_numbers()
|
|||||||
{
|
{
|
||||||
var quality = new TypeWithNumbers { Id = 12 };
|
var quality = new TypeWithNumbers { Id = 12 };
|
||||||
|
|
||||||
var json = Subject.Serialize(quality);
|
var json = Json.Serialize(quality);
|
||||||
|
|
||||||
Subject.Deserialize<TypeWithNumbers>(json);
|
Json.Deserialize<TypeWithNumbers>(json);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -45,7 +45,7 @@
|
|||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Json\JsonFixture.cs" />
|
<Compile Include="JsonTests\JsonFixture.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -65,6 +65,9 @@
|
|||||||
<Name>NzbDrone.Test.Common</Name>
|
<Name>NzbDrone.Test.Common</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="Json\" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
|
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
@ -76,7 +76,6 @@ public void TestBaseSetup()
|
|||||||
|
|
||||||
|
|
||||||
Mocker.SetConstant(LogManager.GetLogger("TestLogger"));
|
Mocker.SetConstant(LogManager.GetLogger("TestLogger"));
|
||||||
Mocker.SetConstant<IJsonSerializer>(new JsonSerializer());
|
|
||||||
|
|
||||||
LogManager.ReconfigExistingLoggers();
|
LogManager.ReconfigExistingLoggers();
|
||||||
|
|
||||||
@ -147,17 +146,17 @@ protected string GetTestFilePath(string fileName)
|
|||||||
return Path.Combine(Directory.GetCurrentDirectory(), "Files", fileName);
|
return Path.Combine(Directory.GetCurrentDirectory(), "Files", fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void VerifyEventPublished<TEvent>() where TEvent : IEvent
|
protected void VerifyEventPublished<TEvent>() where TEvent : class, IEvent
|
||||||
{
|
{
|
||||||
VerifyEventPublished<TEvent>(Times.Once());
|
VerifyEventPublished<TEvent>(Times.Once());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void VerifyEventPublished<TEvent>(Times times) where TEvent : IEvent
|
protected void VerifyEventPublished<TEvent>(Times times) where TEvent : class, IEvent
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IMessageAggregator>().Verify(c => c.PublishEvent(It.IsAny<TEvent>()), times);
|
Mocker.GetMock<IMessageAggregator>().Verify(c => c.PublishEvent(It.IsAny<TEvent>()), times);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void VerifyEventNotPublished<TEvent>() where TEvent : IEvent
|
protected void VerifyEventNotPublished<TEvent>() where TEvent : class, IEvent
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IMessageAggregator>().Verify(c => c.PublishEvent(It.IsAny<TEvent>()), Times.Never());
|
Mocker.GetMock<IMessageAggregator>().Verify(c => c.PublishEvent(It.IsAny<TEvent>()), Times.Never());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user