Beispiel #1
0
        public ValidationFailure Test(SonarrSettings settings)
        {
            try
            {
                GetSeries(settings);
            }
            catch (HttpException ex)
            {
                if (ex.Response.StatusCode == HttpStatusCode.Unauthorized)
                {
                    _logger.Error(ex, "API Key is invalid");
                    return(new ValidationFailure("ApiKey", "API Key is invalid"));
                }

                _logger.Error(ex, "Unable to send test message");
                return(new ValidationFailure("ApiKey", "Unable to send test message"));
            }
            catch (Exception ex)
            {
                _logger.Error(ex, "Unable to send test message");
                return(new ValidationFailure("", "Unable to send test message"));
            }

            return(null);
        }
Beispiel #2
0
        private List <TResource> Execute <TResource>(string resource, SonarrSettings settings)
        {
            if (settings.BaseUrl.IsNullOrWhiteSpace() || settings.ApiKey.IsNullOrWhiteSpace())
            {
                return(new List <TResource>());
            }

            var baseUrl = settings.BaseUrl.TrimEnd('/');

            var request = new HttpRequestBuilder(baseUrl).Resource(resource).Accept(HttpAccept.Json)
                          .SetHeader("X-Api-Key", settings.ApiKey).Build();

            var response = _httpClient.Get(request);

            var results = JsonConvert.DeserializeObject <List <TResource> >(response.Content);

            return(results);
        }
Beispiel #3
0
 public List <SonarrSeries> GetSeries(SonarrSettings settings)
 {
     return(Execute <SonarrSeries>("/api/v3/series", settings));
 }
Beispiel #4
0
 public List <SonarrProfile> GetProfiles(SonarrSettings settings)
 {
     return(Execute <SonarrProfile>("/api/v3/qualityprofile", settings));
 }
Beispiel #5
0
 public List <SonarrTag> GetTags(SonarrSettings settings)
 {
     return(Execute <SonarrTag>("/api/v3/tag", settings));
 }