added support for getting series by slug

This commit is contained in:
Keivan Beigi 2013-05-03 19:30:44 -07:00
parent 806ed921f4
commit 8373e1ce10
3 changed files with 30 additions and 0 deletions

View File

@ -2,9 +2,11 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using FluentValidation; using FluentValidation;
using Nancy;
using NzbDrone.Core.SeriesStats; using NzbDrone.Core.SeriesStats;
using NzbDrone.Core.Tv; using NzbDrone.Core.Tv;
using NzbDrone.Api.Validation; using NzbDrone.Api.Validation;
using NzbDrone.Api.Extensions;
namespace NzbDrone.Api.Series namespace NzbDrone.Api.Series
{ {
@ -25,15 +27,30 @@ namespace NzbDrone.Api.Series
UpdateResource = UpdateSeries; UpdateResource = UpdateSeries;
DeleteResource = DeleteSeries; DeleteResource = DeleteSeries;
Get["/{slug}"] = o => GetSeries((string)o.slug.ToString());
SharedValidator.RuleFor(s => s.RootFolderId).ValidId(); SharedValidator.RuleFor(s => s.RootFolderId).ValidId();
SharedValidator.RuleFor(s => s.QualityProfileId).ValidId(); SharedValidator.RuleFor(s => s.QualityProfileId).ValidId();
PostValidator.RuleFor(s => s.Title).NotEmpty(); PostValidator.RuleFor(s => s.Title).NotEmpty();
} }
private Response GetSeries(string slug)
{
var series = _seriesService.FindBySlug(slug);
if (series == null)
{
return new NotFoundResponse();
}
return series.AsResponse();
}
private List<SeriesResource> AllSeries() private List<SeriesResource> AllSeries()
{ {
var seriesStats = _seriesStatisticsService.SeriesStatistics(); var seriesStats = _seriesStatisticsService.SeriesStatistics();

View File

@ -13,6 +13,7 @@ namespace NzbDrone.Core.Tv
Series FindByTitle(string cleanTitle); Series FindByTitle(string cleanTitle);
Series FindByTvdbId(int tvdbId); Series FindByTvdbId(int tvdbId);
void SetSeriesType(int seriesId, SeriesTypes seriesTypes); void SetSeriesType(int seriesId, SeriesTypes seriesTypes);
Series FindBySlug(string slug);
} }
public class SeriesRepository : BasicRepository<Series>, ISeriesRepository public class SeriesRepository : BasicRepository<Series>, ISeriesRepository
@ -47,5 +48,9 @@ namespace NzbDrone.Core.Tv
SetFields(new Series { Id = seriesId, SeriesType = seriesType }, s => s.SeriesType); SetFields(new Series { Id = seriesId, SeriesType = seriesType }, s => s.SeriesType);
} }
public Series FindBySlug(string slug)
{
return Query.SingleOrDefault(c => c.TitleSlug == slug.ToLower());
}
} }
} }

View File

@ -35,6 +35,7 @@ namespace NzbDrone.Core.Tv
Series UpdateSeries(Series series); Series UpdateSeries(Series series);
bool SeriesPathExists(string folder); bool SeriesPathExists(string folder);
List<Series> GetSeriesInList(IEnumerable<int> seriesIds); List<Series> GetSeriesInList(IEnumerable<int> seriesIds);
Series FindBySlug(string slug);
} }
public class SeriesService : ISeriesService, IHandleAsync<SeriesAddedEvent> public class SeriesService : ISeriesService, IHandleAsync<SeriesAddedEvent>
@ -147,6 +148,13 @@ namespace NzbDrone.Core.Tv
return _seriesRepository.FindByTvdbId(tvdbId); return _seriesRepository.FindByTvdbId(tvdbId);
} }
public Series FindBySlug(string slug)
{
var series = _seriesRepository.FindBySlug(slug);
return series;
}
public Series FindByTitle(string title) public Series FindByTitle(string title)
{ {
var tvdbId = _sceneMappingService.GetTvDbId(title); var tvdbId = _sceneMappingService.GetTvDbId(title);