Fixes issue #62

This commit is contained in:
Shannon Barrett 2016-03-22 12:32:48 -05:00
parent b100fbe678
commit c9d2b8fc13
10 changed files with 73 additions and 17 deletions

View file

@ -43,7 +43,7 @@ namespace PlexRequests.Api.Mocks
return obj;
}
public SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, bool episodes,
public SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, bool episodes, int[] seasons,
string apiKey, Uri baseUrl)
{
var json = MockApiData.Sonarr_AddSeriesResult;

View file

@ -31,6 +31,7 @@ using System;
using NLog;
using PlexRequests.Api.Interfaces;
using PlexRequests.Api.Models.SickRage;
using PlexRequests.Helpers;
using RestSharp;
namespace PlexRequests.Api
@ -47,13 +48,13 @@ namespace PlexRequests.Api
private ApiRequest Api { get; }
public SickRageTvAdd AddSeries(int tvdbId, bool latest, string quality, string apiKey,
public SickRageTvAdd AddSeries(int tvdbId, bool latest, int[] seasons, string quality, string apiKey,
Uri baseUrl)
{
string status;
var futureStatus = SickRageStatus.Wanted;
status = latest ? SickRageStatus.Skipped : SickRageStatus.Wanted;
status = latest || seasons.Length > 0 ? SickRageStatus.Skipped : SickRageStatus.Wanted;
var request = new RestRequest
{
@ -71,6 +72,17 @@ namespace PlexRequests.Api
var obj = Api.Execute<SickRageTvAdd>(request, baseUrl);
if (!latest && seasons.Length > 0 && obj.result != "failure")
{
//handle the seasons requested
foreach (int s in seasons)
{
var result = AddSeason(tvdbId, s, apiKey, baseUrl);
Log.Trace("SickRage adding season results: ");
Log.Trace(result.DumpJson());
}
}
return obj;
}
@ -87,5 +99,22 @@ namespace PlexRequests.Api
return obj;
}
public SickRageTvAdd AddSeason(int tvdbId, int season, string apiKey, Uri baseUrl)
{
var request = new RestRequest
{
Resource = "/api/{apiKey}/?cmd=episode.setstatus",
Method = Method.GET
};
request.AddUrlSegment("apiKey", apiKey);
request.AddQueryParameter("tvdbid", tvdbId.ToString());
request.AddQueryParameter("season", season.ToString());
request.AddQueryParameter("status", SickRageStatus.Wanted);
var obj = Api.Execute<SickRageTvAdd>(request, baseUrl);
return obj;
}
}
}

View file

@ -54,7 +54,7 @@ namespace PlexRequests.Api
return obj;
}
public SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, bool episodes, string apiKey, Uri baseUrl)
public SonarrAddSeries AddSeries(int tvdbId, string title, int qualityId, bool seasonFolders, string rootPath, bool episodes, int[] seasons, string apiKey, Uri baseUrl)
{
var request = new RestRequest
@ -90,6 +90,19 @@ namespace PlexRequests.Api
options.seasons = new List<Season>();
options.rootFolderPath = rootPath;
if (seasons.Length > 0)
{
foreach (int s in seasons)
{
var season = new Season
{
seasonNumber = s,
monitored = true
};
options.seasons.Add(season);
}
}
request.AddHeader("X-Api-Key", apiKey);
request.AddJsonBody(options);