public async Task <string> RefreshTokenAsync(string authToken, IWebProxy proxy)
        {
            string baseUrl = _configurationValues.ApiBaseUrl;
            string url     = baseUrl + Endpoints.RefreshToken;

            string json = await _httpDownloader.GetStringAsync(url,
                                                               new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase)
            {
                { "Content-Type", "application/json" },
                { "Authorization", $"Bearer {authToken}" }
            },
                                                               proxy);

            return(json);
        }
        public async Task <string> GetAuthTokenAsync(IWebProxy proxy)
        {
            string baseUrl = _configurationValues.ApiBaseUrl;
            string apiKey  = _configurationValues.ApiKey;

            string url  = baseUrl + Endpoints.Login;
            string body = $"{{\"apiKey\": \"{apiKey}\"}}";
            string json = await _httpDownloader.PostStringAsync(url, body,
                                                                new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase)
            {
                { "Content-Type", "application/json" }
            },
                                                                proxy);

            return(json);
        }
        //public async Task<string> GetAuthTokenAsync(IWebProxy proxy)
        //{
        //    string baseUrl = _configurationValues.ApiBaseUrl;
        //    string apiKey = _configurationValues.ApiKey;

        //    string url = baseUrl + Endpoints.NewAuthenticationToken;
        //    Dictionary<string, string> queryParams = new Dictionary<string, string>
        //    {
        //        {"api_key", apiKey},
        //    };

        //    string queryString = "?";
        //    foreach (var param in queryParams)
        //    {
        //        if (queryString.Length > 1) queryString += "&";
        //        queryString += $"{WebUtility.UrlEncode(param.Key)}={WebUtility.UrlEncode(param.Value)}";
        //    }
        //    url += queryString;
        //    string json = await _httpDownloader.GetStringAsync(url,
        //        new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
        //        {
        //            {"Content-Type", "application/json"}
        //        },
        //        proxy);
        //    return json;
        //}

        public async Task <string> FindByExternalId(MovieSearchParams searchParams, IWebProxy proxy)
        {
            string baseUrl = _configurationValues.ApiBaseUrl;
            string apiKey  = _configurationValues.ApiKey;

            string url = baseUrl;
            Dictionary <string, string> queryParams = new Dictionary <string, string>
            {
                { "api_key", apiKey },
            };

            if (!string.IsNullOrWhiteSpace(searchParams.ImdbId))
            {
                url = baseUrl + string.Format(Endpoints.FindByExternalId, searchParams.ImdbId);
                queryParams.Add("external_source", "imdb_id");
            }

            string queryString = "?";

            foreach (var param in queryParams)
            {
                if (queryString.Length > 1)
                {
                    queryString += "&";
                }
                queryString += $"{WebUtility.UrlEncode(param.Key)}={WebUtility.UrlEncode(param.Value)}";
            }
            url += queryString;
            string json = await _httpDownloader.GetStringAsync(url,
                                                               new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase)
            {
                { "Content-Type", "application/json" }
            },
                                                               proxy);

            return(json);
        }
Beispiel #4
0
        public async Task <string> GetSeriesExtendedAsync(ISeriesIdentifier seriesIdentifier, string authToken, IWebProxy proxy)
        {
            string baseUrl = _configurationValues.ApiBaseUrl;
            string url     = baseUrl + string.Format(Endpoints.GetSeries, seriesIdentifier.Id);

            string json = await _httpDownloader.GetStringAsync(url,
                                                               new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase)
            {
                { "Authorization", $"Bearer {authToken}" }
            },
                                                               proxy);

            return(json);
        }
Beispiel #5
0
        public async Task <string> GetSeriesSearchResultsAsync(SeriesSearchParams searchParams, string authToken, IWebProxy proxy)
        {
            string baseUrl = _configurationValues.ApiBaseUrl;
            string url     = baseUrl + Endpoints.SeriesSearch;

            Dictionary <string, string> queryParams = new Dictionary <string, string>
            {
                { "type", "series" },
            };

            if (!string.IsNullOrWhiteSpace(searchParams?.Name))
            {
                queryParams.Add("query", searchParams.Name);
            }
            // TODO: Search by IMDB ID
            //if (!string.IsNullOrWhiteSpace(searchParams?.ImdbId))
            //    queryParams.Add("imdbId", searchParams.ImdbId);

            string queryString = "?";

            foreach (var param in queryParams)
            {
                if (queryString.Length > 1)
                {
                    queryString += "&";
                }
                queryString += $"{WebUtility.UrlEncode(param.Key)}={WebUtility.UrlEncode(param.Value)}";
            }
            url += queryString;

            string json = await _httpDownloader.GetStringAsync(url,
                                                               new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase)
            {
                { "Authorization", $"Bearer {authToken}" }
            },
                                                               proxy);

            return(json);
        }
Beispiel #6
0
        public async Task <string> GetEpisodeTranslationAsync(long episodeId, string language, string authToken, IWebProxy proxy)
        {
            string baseUrl = _configurationValues.ApiBaseUrl;
            string url     = baseUrl + string.Format(Endpoints.GetEpisodeTranslation, episodeId, language);

            string json = await _httpDownloader.GetStringAsync(url,
                                                               new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase)
            {
                { "Authorization", $"Bearer {authToken}" }      // TODO: Extension method
            },
                                                               proxy);

            return(json);
        }
        public async Task <string> GetMovieDetailsAsync(IMovieIdentifier movieIdentifier, IWebProxy proxy)
        {
            string baseUrl = _configurationValues.ApiBaseUrl;
            string apiKey  = _configurationValues.ApiKey;

            string url = baseUrl + string.Format(Endpoints.GetMovieByMovieId, movieIdentifier.Id);
            Dictionary <string, string> queryParams = new Dictionary <string, string>
            {
                { "api_key", apiKey },
            };

            string queryString = "?";

            foreach (var param in queryParams)
            {
                if (queryString.Length > 1)
                {
                    queryString += "&";
                }
                queryString += $"{WebUtility.UrlEncode(param.Key)}={WebUtility.UrlEncode(param.Value)}";
            }
            url += queryString;
            string json = await _httpDownloader.GetStringAsync(url,
                                                               new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase)
            {
                { "Content-Type", "application/json" }
            },
                                                               proxy);

            return(json);
        }
        public async Task <string> GetMovieSearchResultsAsync(MovieSearchParams searchParams, int page, IWebProxy proxy)
        {
            string baseUrl = _configurationValues.ApiBaseUrl;
            string apiKey  = _configurationValues.ApiKey;

            string url = baseUrl + Endpoints.MovieSearch;
            Dictionary <string, string> queryParams = new Dictionary <string, string>
            {
                { "query", searchParams.Name },
                { "page", page.ToString() },
                { "include_adult", searchParams.IncludeAdult.ToString().ToLowerInvariant() },
                { "api_key", apiKey },
            };

            if (searchParams.Year.HasValue)
            {
                queryParams.Add("year", searchParams.Year.Value.ToString());
            }

            string queryString = "?";

            foreach (var param in queryParams)
            {
                if (queryString.Length > 1)
                {
                    queryString += "&";
                }
                queryString += $"{WebUtility.UrlEncode(param.Key)}={WebUtility.UrlEncode(param.Value)}";
            }
            url += queryString;
            string json = await _httpDownloader.GetStringAsync(url,
                                                               new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase)
            {
                { "Content-Type", "application/json" }
            },
                                                               proxy);

            return(json);
        }
 public async Task <string> GetMovieSearchResultsAsync(MovieSearchParams searchParams, IWebProxy proxy)
 {
     return(await GetMovieSearchResultsAsync(searchParams, 1, proxy));
 }
 public async Task <string> GetEpisodesAsync(ISeriesIdentifier seriesIdentifier, string authToken, IWebProxy proxy)
 {
     return(await GetEpisodesAsync(seriesIdentifier, 1, authToken, proxy));
 }
        public async Task <string> GetSeriesImagesAsync(ISeriesIdentifier seriesIdentifier, string authToken, IWebProxy proxy)
        {
            string baseUrl = _configurationValues.ApiBaseUrl;
            string url     = baseUrl + string.Format(Endpoints.GetImages, seriesIdentifier.Id);

            List <string> keyTypes = new List <string> {
                "poster", "fanart", "series", "season", "seasonwide"
            };
            Dictionary <string, Task <string> > imageTasks = new Dictionary <string, Task <string> >();

            foreach (string keyType in keyTypes)
            {
                string        queryUrl = url + $"?keyType={keyType}";
                Task <string> task     = _httpDownloader.GetStringAsync(queryUrl,
                                                                        new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase)
                {
                    { "Authorization", $"Bearer {authToken}" }
                },
                                                                        proxy);
                imageTasks.Add(keyType, task);
            }

            await Task.WhenAll(imageTasks.Values.Cast <Task>().ToArray());

            string json = "{";

            for (int i = 0; i < keyTypes.Count; i++)
            {
                string keyType    = keyTypes[i];
                string terminator = (i < (keyTypes.Count - 1)) ? "," : string.Empty;
                json += $"\t\"{keyType}\":{imageTasks[keyType].Result}{terminator}\r\n";
            }
            json += "}";
            return(json);
        }