using System.Collections.Generic; using System.Net; using Newtonsoft.Json; using NzbDrone.Common.Extensions; using NzbDrone.Core.ImportLists.Exceptions; using NzbDrone.Core.ImportLists.ImportListMovies; using NzbDrone.Core.MetadataSource.SkyHook.Resource; namespace NzbDrone.Core.ImportLists.RadarrList2 { public class RadarrList2Parser : IParseImportListResponse { public virtual IList ParseResponse(ImportListResponse importListResponse) { var importResponse = importListResponse; var movies = new List(); if (!PreProcess(importResponse)) { return movies; } var jsonResponse = JsonConvert.DeserializeObject>(importResponse.Content); // no movies were return if (jsonResponse == null) { return movies; } return jsonResponse.SelectList(m => new ImportListMovie { TmdbId = m.TmdbId }); } protected virtual bool PreProcess(ImportListResponse listResponse) { if (listResponse.HttpResponse.StatusCode != HttpStatusCode.OK) { throw new ImportListException(listResponse, "Radarr API call resulted in an unexpected StatusCode [{0}]", listResponse.HttpResponse.StatusCode); } if (listResponse.HttpResponse.Headers.ContentType != null && listResponse.HttpResponse.Headers.ContentType.Contains("text/json") && listResponse.HttpRequest.Headers.Accept != null && !listResponse.HttpRequest.Headers.Accept.Contains("text/json")) { throw new ImportListException(listResponse, "Radarr API responded with html content. Site is likely blocked or unavailable."); } return true; } } }