Lidarr/NzbDrone.Api/Bootstrapper.cs

94 lines
3.1 KiB
C#
Raw Normal View History

using System.Linq;
2012-11-04 01:39:29 +00:00
using AutoMapper;
using Autofac;
using NLog;
using Nancy.Bootstrapper;
using Nancy.Bootstrappers.Autofac;
using NzbDrone.Api.ErrorManagment;
using NzbDrone.Api.Extentions;
2012-11-04 01:39:29 +00:00
using NzbDrone.Api.QualityProfiles;
using NzbDrone.Api.QualityType;
2012-11-09 16:28:59 +00:00
using NzbDrone.Api.Resolvers;
using NzbDrone.Core;
2012-11-04 01:39:29 +00:00
using NzbDrone.Core.Repository.Quality;
namespace NzbDrone.Api
{
public class Bootstrapper : AutofacNancyBootstrapper
2012-11-04 01:39:29 +00:00
{
private readonly Logger _logger;
public Bootstrapper()
{
_logger = LogManager.GetCurrentClassLogger();
}
2013-01-20 01:00:20 +00:00
protected override void ApplicationStartup(ILifetimeScope container, IPipelines pipelines)
{
InitializeAutomapper();
}
public static void InitializeAutomapper()
2012-11-04 01:39:29 +00:00
{
//QualityProfiles
2012-12-03 03:08:26 +00:00
Mapper.CreateMap<QualityProfileModel, QualityProfile>()
.ForMember(dest => dest.QualityProfileId, opt => opt.MapFrom(src => src.Id))
.ForMember(dest => dest.Allowed,
opt => opt.ResolveUsing<QualitiesToAllowedResolver>().FromMember(src => src.Qualities));
2012-12-03 03:08:26 +00:00
Mapper.CreateMap<QualityProfile, QualityProfileModel>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.QualityProfileId))
.ForMember(dest => dest.Qualities,
opt => opt.ResolveUsing<AllowedToQualitiesResolver>().FromMember(src => src.Allowed));
2012-11-24 08:03:38 +00:00
Mapper.CreateMap<QualityTypes, QualityProfileType>()
.ForMember(dest => dest.Allowed, opt => opt.Ignore());
//QualityTypes
Mapper.CreateMap<QualityTypeModel, Core.Repository.Quality.QualityType>()
.ForMember(dest => dest.QualityTypeId, opt => opt.MapFrom(src => src.Id));
Mapper.CreateMap<Core.Repository.Quality.QualityType, QualityTypeModel>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.QualityTypeId));
2012-11-04 01:39:29 +00:00
}
protected override ILifetimeScope GetApplicationContainer()
{
_logger.Info("Starting NzbDrone API");
var builder = new ContainerBuilder();
builder.RegisterCoreServices();
builder.RegisterAssemblyTypes(typeof(Bootstrapper).Assembly)
.AsImplementedInterfaces()
.SingleInstance();
builder.RegisterType<ErrorPipeline>().AsSelf().SingleInstance();
var container = builder.Build();
ApplicationPipelines.OnError.AddItemToEndOfPipeline(container.Resolve<ErrorPipeline>().HandleException);
return container;
}
protected override NancyInternalConfiguration InternalConfiguration
{
get
{
var internalConfig = NancyInternalConfiguration.Default;
internalConfig.StatusCodeHandlers.Add(typeof(ErrorHandler));
internalConfig.Serializers.Add(typeof(NancyJsonSerializer));
return internalConfig;
}
}
2012-11-04 01:39:29 +00:00
}
}