mirror of
https://github.com/Radarr/Radarr.git
synced 2024-09-19 07:52:33 +02:00
Json.net instead of ServiceStack
More DailySeries repo work done
This commit is contained in:
parent
c511292abe
commit
b7575e05c1
@ -7,7 +7,7 @@
|
|||||||
using NLog;
|
using NLog;
|
||||||
using Nancy.Bootstrapper;
|
using Nancy.Bootstrapper;
|
||||||
using Nancy.Bootstrappers.Autofac;
|
using Nancy.Bootstrappers.Autofac;
|
||||||
using NzbDrone.Services.Api.NancyExtensions;
|
using NzbDrone.Services.Api.Extensions;
|
||||||
|
|
||||||
namespace NzbDrone.Services.Api
|
namespace NzbDrone.Services.Api
|
||||||
{
|
{
|
||||||
@ -34,7 +34,7 @@ protected override NancyInternalConfiguration InternalConfiguration
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return NancyInternalConfiguration.WithOverrides(c => c.Serializers.Add(typeof(ServiceStackSerializer)));
|
return NancyInternalConfiguration.WithOverrides(c => c.Serializers.Add(typeof(NancyJsonSerializer)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,15 +3,15 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using Nancy;
|
using Nancy;
|
||||||
using NzbDrone.Services.Api.NancyExtensions;
|
using NzbDrone.Services.Api.Extensions;
|
||||||
|
|
||||||
namespace NzbDrone.Services.Api.DailySeries
|
namespace NzbDrone.Services.Api.DailySeries
|
||||||
{
|
{
|
||||||
public class DailySeriesModule : NancyModule
|
public class DailySeriesModule : NancyModule
|
||||||
{
|
{
|
||||||
private readonly DailySeriesProvider _dailySeriesProvider;
|
private readonly DailySeriesRepository _dailySeriesProvider;
|
||||||
|
|
||||||
public DailySeriesModule(DailySeriesProvider dailySeriesProvider)
|
public DailySeriesModule(DailySeriesRepository dailySeriesProvider)
|
||||||
: base("/dailyseries")
|
: base("/dailyseries")
|
||||||
{
|
{
|
||||||
_dailySeriesProvider = dailySeriesProvider;
|
_dailySeriesProvider = dailySeriesProvider;
|
||||||
|
@ -7,16 +7,16 @@
|
|||||||
|
|
||||||
namespace NzbDrone.Services.Api.DailySeries
|
namespace NzbDrone.Services.Api.DailySeries
|
||||||
{
|
{
|
||||||
public class DailySeriesProvider
|
public class DailySeriesRepository
|
||||||
{
|
{
|
||||||
private readonly MongoDatabase _mongoDb;
|
private readonly MongoDatabase _mongoDb;
|
||||||
|
|
||||||
public DailySeriesProvider(MongoDatabase mongoDb)
|
public DailySeriesRepository(MongoDatabase mongoDb)
|
||||||
{
|
{
|
||||||
_mongoDb = mongoDb;
|
_mongoDb = mongoDb;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DailySeriesProvider()
|
public DailySeriesRepository()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -36,5 +36,23 @@ public Boolean IsDaily(int seriesId)
|
|||||||
var query = Query<DailySeriesModel>.EQ(d => d.Id, seriesId);
|
var query = Query<DailySeriesModel>.EQ(d => d.Id, seriesId);
|
||||||
return _mongoDb.GetCollection<DailySeriesModel>(DailySeriesModel.CollectionName).Count(query) > 0;
|
return _mongoDb.GetCollection<DailySeriesModel>(DailySeriesModel.CollectionName).Count(query) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Insert(DailySeriesModel dailySeries)
|
||||||
|
{
|
||||||
|
_mongoDb.GetCollection<DailySeriesModel>(DailySeriesModel.CollectionName).Insert(dailySeries);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Delete(int seriesId)
|
||||||
|
{
|
||||||
|
var query = Query<DailySeriesModel>.EQ(d => d.Id, seriesId);
|
||||||
|
_mongoDb.GetCollection<DailySeriesModel>(DailySeriesModel.CollectionName).Remove(query);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void TogglePublic(int seriesId, bool status)
|
||||||
|
{
|
||||||
|
var query = Query<DailySeriesModel>.EQ(d => d.Id, seriesId);
|
||||||
|
var update = Update<DailySeriesModel>.Set(d => d.Public, status);
|
||||||
|
_mongoDb.GetCollection<DailySeriesModel>(DailySeriesModel.CollectionName).Update(query, update);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Configuration;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using MongoDB.Driver;
|
using MongoDB.Driver;
|
||||||
@ -10,7 +11,7 @@ public class Connection
|
|||||||
{
|
{
|
||||||
public MongoDatabase GetMainDb()
|
public MongoDatabase GetMainDb()
|
||||||
{
|
{
|
||||||
var db = GetMongoDb("mongodb://nzbdrone:h53huDrAzufRe8a3@ds035147.mongolab.com:35147/?safe=true;wtimeoutMS=2000", "services-dev");
|
var db = GetMongoDb(ConfigurationManager.ConnectionStrings["MongoLab"].ConnectionString, "services-dev");
|
||||||
return db;
|
return db;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
27
NzbDrone.Services.Api/Extensions/NancyJsonSerializer.cs
Normal file
27
NzbDrone.Services.Api/Extensions/NancyJsonSerializer.cs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using Nancy;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace NzbDrone.Services.Api.Extensions
|
||||||
|
{
|
||||||
|
public class NancyJsonSerializer : ISerializer
|
||||||
|
{
|
||||||
|
public readonly static NancyJsonSerializer Instance = new NancyJsonSerializer();
|
||||||
|
|
||||||
|
public bool CanSerialize(string contentType)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Serialize<TModel>(string contentType, TModel model, Stream outputStream)
|
||||||
|
{
|
||||||
|
var jsonTextWriter = new JsonTextWriter(new StreamWriter(outputStream));
|
||||||
|
Serializer.Instance.Serialize(jsonTextWriter, model);
|
||||||
|
jsonTextWriter.Flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<string> Extensions { get; private set; }
|
||||||
|
}
|
||||||
|
}
|
@ -1,25 +1,24 @@
|
|||||||
using System;
|
using System.IO;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Web;
|
|
||||||
using Nancy;
|
using Nancy;
|
||||||
using Nancy.Responses;
|
using Nancy.Responses;
|
||||||
using ServiceStack.Text;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace NzbDrone.Services.Api.NancyExtensions
|
namespace NzbDrone.Services.Api.Extensions
|
||||||
{
|
{
|
||||||
public static class JsonExtensions
|
public static class JsonExtensions
|
||||||
{
|
{
|
||||||
public static T FromJson<T>(this Stream body)
|
public static T FromJson<T>(this Stream body)
|
||||||
{
|
{
|
||||||
var reader = new StreamReader(body, true);
|
var reader = new StreamReader(body, true);
|
||||||
return JsonSerializer.DeserializeFromReader<T>(reader);
|
body.Position = 0;
|
||||||
|
var value = reader.ReadToEnd();
|
||||||
|
return JsonConvert.DeserializeObject<T>(value, Serializer.Settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
{
|
{
|
||||||
var jsonResponse = new JsonResponse<TModel>(model, new ServiceStackSerializer()) { StatusCode = statusCode };
|
var jsonResponse = new JsonResponse<TModel>(model, new NancyJsonSerializer()) { StatusCode = statusCode };
|
||||||
return jsonResponse;
|
return jsonResponse;
|
||||||
}
|
}
|
||||||
}
|
}
|
33
NzbDrone.Services.Api/Extensions/Serializer.cs
Normal file
33
NzbDrone.Services.Api/Extensions/Serializer.cs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
using System.Linq;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Serialization;
|
||||||
|
|
||||||
|
namespace NzbDrone.Services.Api.Extensions
|
||||||
|
{
|
||||||
|
public static class Serializer
|
||||||
|
{
|
||||||
|
static Serializer()
|
||||||
|
{
|
||||||
|
Settings = new JsonSerializerSettings
|
||||||
|
{
|
||||||
|
DateTimeZoneHandling = DateTimeZoneHandling.Utc,
|
||||||
|
NullValueHandling = NullValueHandling.Ignore,
|
||||||
|
Formatting = Formatting.None,
|
||||||
|
DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate
|
||||||
|
};
|
||||||
|
|
||||||
|
Instance = new JsonSerializer
|
||||||
|
{
|
||||||
|
DateTimeZoneHandling = Settings.DateTimeZoneHandling,
|
||||||
|
NullValueHandling = NullValueHandling.Ignore,
|
||||||
|
Formatting = Formatting.None,
|
||||||
|
DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate,
|
||||||
|
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static JsonSerializerSettings Settings { get; private set; }
|
||||||
|
|
||||||
|
public static JsonSerializer Instance { get; private set; }
|
||||||
|
}
|
||||||
|
}
|
@ -1,27 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Web;
|
|
||||||
using Nancy;
|
|
||||||
using ServiceStack.Text;
|
|
||||||
|
|
||||||
namespace NzbDrone.Services.Api.NancyExtensions
|
|
||||||
{
|
|
||||||
public class ServiceStackSerializer : ISerializer
|
|
||||||
{
|
|
||||||
public readonly static ServiceStackSerializer Instance = new ServiceStackSerializer();
|
|
||||||
|
|
||||||
public bool CanSerialize(string contentType)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Serialize<TModel>(string contentType, TModel model, Stream outputStream)
|
|
||||||
{
|
|
||||||
JsonSerializer.SerializeToStream(model, outputStream);
|
|
||||||
}
|
|
||||||
|
|
||||||
public IEnumerable<string> Extensions { get; private set; }
|
|
||||||
}
|
|
||||||
}
|
|
@ -62,12 +62,12 @@
|
|||||||
<Reference Include="Nancy.Hosting.Aspnet">
|
<Reference Include="Nancy.Hosting.Aspnet">
|
||||||
<HintPath>..\packages\Nancy.Hosting.Aspnet.0.15.3\lib\net40\Nancy.Hosting.Aspnet.dll</HintPath>
|
<HintPath>..\packages\Nancy.Hosting.Aspnet.0.15.3\lib\net40\Nancy.Hosting.Aspnet.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Newtonsoft.Json">
|
||||||
|
<HintPath>..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="NLog">
|
<Reference Include="NLog">
|
||||||
<HintPath>..\packages\NLog.2.0.0.2000\lib\net40\NLog.dll</HintPath>
|
<HintPath>..\packages\NLog.2.0.0.2000\lib\net40\NLog.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="ServiceStack.Text">
|
|
||||||
<HintPath>..\packages\ServiceStack.Text.3.9.33\lib\net35\ServiceStack.Text.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Web.DynamicData" />
|
<Reference Include="System.Web.DynamicData" />
|
||||||
<Reference Include="System.Web.Entity" />
|
<Reference Include="System.Web.Entity" />
|
||||||
<Reference Include="System.Web.ApplicationServices" />
|
<Reference Include="System.Web.ApplicationServices" />
|
||||||
@ -93,11 +93,13 @@
|
|||||||
<Compile Include="Bootstrapper.cs" />
|
<Compile Include="Bootstrapper.cs" />
|
||||||
<Compile Include="DailySeries\DailySeriesModel.cs" />
|
<Compile Include="DailySeries\DailySeriesModel.cs" />
|
||||||
<Compile Include="DailySeries\DailySeriesModule.cs" />
|
<Compile Include="DailySeries\DailySeriesModule.cs" />
|
||||||
<Compile Include="DailySeries\DailySeriesProvider.cs" />
|
<Compile Include="DailySeries\DailySeriesRepository.cs" />
|
||||||
<Compile Include="Datastore\Connection.cs" />
|
<Compile Include="Datastore\Connection.cs" />
|
||||||
<Compile Include="NancyExtensions\JsonExtensions.cs" />
|
<Compile Include="Extensions\NancyJsonSerializer.cs" />
|
||||||
<Compile Include="NancyExtensions\ServiceStackSerializer.cs" />
|
<Compile Include="Extensions\RequestExtensions.cs" />
|
||||||
|
<Compile Include="Extensions\Serializer.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="SceneMapping\SceneMappingModel.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="packages.config" />
|
<Content Include="packages.config" />
|
||||||
|
33
NzbDrone.Services.Api/SceneMapping/SceneMappingModel.cs
Normal file
33
NzbDrone.Services.Api/SceneMapping/SceneMappingModel.cs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Web;
|
||||||
|
using MongoDB.Bson.Serialization.Attributes;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
|
||||||
|
namespace NzbDrone.Services.Api.SceneMapping
|
||||||
|
{
|
||||||
|
public class SceneMappingModel
|
||||||
|
{
|
||||||
|
public const string CollectionName = "SceneMappings";
|
||||||
|
|
||||||
|
[BsonId]
|
||||||
|
public String Id { get; set; }
|
||||||
|
|
||||||
|
[BsonElement("ct")]
|
||||||
|
public string CleanTitle { get; set; }
|
||||||
|
|
||||||
|
[BsonElement("si")]
|
||||||
|
[JsonProperty(PropertyName = "id")]
|
||||||
|
public int SeriesId { get; set; }
|
||||||
|
|
||||||
|
[BsonElement("sn")]
|
||||||
|
[JsonProperty(PropertyName = "Title")]
|
||||||
|
public string SceneName { get; set; }
|
||||||
|
|
||||||
|
[BsonElement("s")]
|
||||||
|
[JsonProperty(PropertyName = "Season")]
|
||||||
|
public int SeasonNumber { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -4,6 +4,9 @@
|
|||||||
http://go.microsoft.com/fwlink/?LinkId=169433
|
http://go.microsoft.com/fwlink/?LinkId=169433
|
||||||
-->
|
-->
|
||||||
<configuration>
|
<configuration>
|
||||||
|
<connectionStrings>
|
||||||
|
<add name="MongoLab" connectionString="mongodb://nzbdrone:h53huDrAzufRe8a3@ds035147.mongolab.com:35147/?safe=true;wtimeoutMS=2000" />
|
||||||
|
</connectionStrings>
|
||||||
<system.web>
|
<system.web>
|
||||||
<compilation debug="true" targetFramework="4.0" />
|
<compilation debug="true" targetFramework="4.0" />
|
||||||
<httpHandlers>
|
<httpHandlers>
|
||||||
|
@ -5,6 +5,6 @@
|
|||||||
<package id="Nancy" version="0.15.3" targetFramework="net40" />
|
<package id="Nancy" version="0.15.3" targetFramework="net40" />
|
||||||
<package id="Nancy.Bootstrappers.Autofac" version="0.15.3" targetFramework="net40" />
|
<package id="Nancy.Bootstrappers.Autofac" version="0.15.3" targetFramework="net40" />
|
||||||
<package id="Nancy.Hosting.Aspnet" version="0.15.3" targetFramework="net40" />
|
<package id="Nancy.Hosting.Aspnet" version="0.15.3" targetFramework="net40" />
|
||||||
|
<package id="Newtonsoft.Json" version="4.5.11" targetFramework="net40" />
|
||||||
<package id="NLog" version="2.0.0.2000" targetFramework="net40" />
|
<package id="NLog" version="2.0.0.2000" targetFramework="net40" />
|
||||||
<package id="ServiceStack.Text" version="3.9.33" targetFramework="net40" />
|
|
||||||
</packages>
|
</packages>
|
@ -5,6 +5,8 @@
|
|||||||
<s:String x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=5C7F3FB135E52A44B9447C48B2EEEE92/AbsolutePath/@EntryValue">C:\Dropbox\Git\NzbDrone\NzbDrone.sln.DotSettings</s:String>
|
<s:String x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=5C7F3FB135E52A44B9447C48B2EEEE92/AbsolutePath/@EntryValue">C:\Dropbox\Git\NzbDrone\NzbDrone.sln.DotSettings</s:String>
|
||||||
<s:Boolean x:Key="/Default/Environment/InjectedLayers/InjectedLayerCustomization/=File5C7F3FB135E52A44B9447C48B2EEEE92/@KeyIndexDefined">True</s:Boolean>
|
<s:Boolean x:Key="/Default/Environment/InjectedLayers/InjectedLayerCustomization/=File5C7F3FB135E52A44B9447C48B2EEEE92/@KeyIndexDefined">True</s:Boolean>
|
||||||
<s:Double x:Key="/Default/Environment/InjectedLayers/InjectedLayerCustomization/=File5C7F3FB135E52A44B9447C48B2EEEE92/RelativePriority/@EntryValue">1</s:Double>
|
<s:Double x:Key="/Default/Environment/InjectedLayers/InjectedLayerCustomization/=File5C7F3FB135E52A44B9447C48B2EEEE92/RelativePriority/@EntryValue">1</s:Double>
|
||||||
|
<s:Boolean x:Key="/Default/Environment/InjectedLayers/InjectedLayerCustomization/=File_003A_003AC_003A_005CDropbox_005CGit_005CNzbDrone_005CNzbDrone_002Esln_002EDotSettings/@KeyIndexDefined">True</s:Boolean>
|
||||||
|
<s:Double x:Key="/Default/Environment/InjectedLayers/InjectedLayerCustomization/=File_003A_003AC_003A_005CDropbox_005CGit_005CNzbDrone_005CNzbDrone_002Esln_002EDotSettings/RelativePriority/@EntryValue">2</s:Double>
|
||||||
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=26E712D4B91E2E49A0E92C0AFE6FF57E/Entry/=38860059D7978D4DAF1997C7CBC46A78/EntryName/@EntryValue">Backbone model</s:String>
|
<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=26E712D4B91E2E49A0E92C0AFE6FF57E/Entry/=38860059D7978D4DAF1997C7CBC46A78/EntryName/@EntryValue">Backbone model</s:String>
|
||||||
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=26E712D4B91E2E49A0E92C0AFE6FF57E/Entry/=38860059D7978D4DAF1997C7CBC46A78/Position/@EntryValue">5</s:Int64>
|
<s:Int64 x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=26E712D4B91E2E49A0E92C0AFE6FF57E/Entry/=38860059D7978D4DAF1997C7CBC46A78/Position/@EntryValue">5</s:Int64>
|
||||||
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4F6A0CA32FE60746A73308F7E39A63C1/@KeyIndexDefined">True</s:Boolean>
|
<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/Template/=4F6A0CA32FE60746A73308F7E39A63C1/@KeyIndexDefined">True</s:Boolean>
|
||||||
|
Loading…
Reference in New Issue
Block a user