Esempio n. 1
0
 public static void Populate(this TVDB_Series_Search_Response response, XmlNode series)
 {
     response.Id         = string.Empty;
     response.SeriesID   = 0;
     response.Overview   = string.Empty;
     response.SeriesName = string.Empty;
     response.Banner     = string.Empty;
     if (series["seriesid"] != null)
     {
         response.SeriesID = int.Parse(series["seriesid"].InnerText);
     }
     if (series["SeriesName"] != null)
     {
         response.SeriesName = series["SeriesName"].InnerText;
     }
     if (series["id"] != null)
     {
         response.Id = series["id"].InnerText;
     }
     if (series["Overview"] != null)
     {
         response.Overview = series["Overview"].InnerText;
     }
     if (series["banner"] != null)
     {
         response.Banner = series["banner"].InnerText;
     }
     if (series["language"] != null)
     {
         response.Language = series["language"].InnerText;
     }
 }
Esempio n. 2
0
 public static void Populate(this TVDB_Series_Search_Response response, TvDbSharper.Clients.Search.Json.SeriesSearchResult series)
 {
     response.Id         = String.Empty;
     response.SeriesID   = series.Id;
     response.SeriesName = series.SeriesName;
     response.Overview   = series.Overview;
     response.Banner     = series.Banner;
 }
Esempio n. 3
0
 public static void Populate(this TVDB_Series_Search_Response response, TvDbSharper.Dto.SeriesSearchResult series)
 {
     response.Id         = string.Empty;
     response.SeriesID   = series.Id;
     response.SeriesName = series.SeriesName;
     response.Overview   = series.Overview;
     response.Banner     = series.Banner;
     response.Language   = string.Intern("en");
 }
Esempio n. 4
0
        public static async Task <List <TVDB_Series_Search_Response> > SearchSeriesAsync(string criteria)
        {
            List <TVDB_Series_Search_Response> results = new List <TVDB_Series_Search_Response>();

            try
            {
                await CheckAuthorizationAsync();

                // Search for a series
                logger.Trace($"Search TvDB Series: {criteria}");

                TvDBRateLimiter.Instance.EnsureRate();
                var response = await client.Search.SearchSeriesByNameAsync(criteria);

                SeriesSearchResult[] series = response?.Data;
                if (series == null)
                {
                    return(results);
                }

                foreach (SeriesSearchResult item in series)
                {
                    TVDB_Series_Search_Response searchResult = new TVDB_Series_Search_Response();
                    searchResult.Populate(item);
                    results.Add(searchResult);
                }
            }
            catch (TvDbServerException exception)
            {
                if (exception.StatusCode == (int)HttpStatusCode.Unauthorized)
                {
                    client.Authentication.Token = null;
                    await CheckAuthorizationAsync();

                    if (!string.IsNullOrEmpty(client.Authentication.Token))
                    {
                        return(await SearchSeriesAsync(criteria));
                    }
                    // suppress 404 and move on
                }
                else if (exception.StatusCode == (int)HttpStatusCode.NotFound)
                {
                    return(results);
                }
                logger.Error(exception,
                             $"TvDB returned an error code: {exception.StatusCode}\n        {exception.Message}\n        when searching for {criteria}");
                Analytics.PostException(exception);
            }
            catch (Exception ex)
            {
                logger.Error(ex, $"Error in SearchSeries: {ex}");
                Analytics.PostException(ex);
            }

            return(results);
        }
Esempio n. 5
0
        public static async Task <List <TVDB_Series_Search_Response> > SearchSeriesAsync(string criteria)
        {
            List <TVDB_Series_Search_Response> results = new List <TVDB_Series_Search_Response>();

            try
            {
                await _checkAuthorizationAsync();

                // Search for a series
                logger.Trace("Search TvDB Series: {0}", criteria);

                TvDBRateLimiter.Instance.EnsureRate();
                var response = await client.Search.SearchSeriesByNameAsync(criteria);

                TvDbSharper.Clients.Search.Json.SeriesSearchResult[] series = response.Data;

                foreach (TvDbSharper.Clients.Search.Json.SeriesSearchResult item in series)
                {
                    TVDB_Series_Search_Response searchResult = new TVDB_Series_Search_Response();
                    searchResult.Populate(item);
                    results.Add(searchResult);
                }
            }
            catch (TvDbSharper.Errors.TvDbServerException exception)
            {
                if (exception.StatusCode == HttpStatusCode.Unauthorized)
                {
                    client.Authentication.Token = null;
                    await _checkAuthorizationAsync();

                    if (client.Authentication.Token != null)
                    {
                        return(await SearchSeriesAsync(criteria));
                    }
                    // suppress 404 and move on
                }
                else if (exception.StatusCode == HttpStatusCode.NotFound)
                {
                    return(results);
                }
                logger.Error(exception, "TvDB returned an error code: " + exception.StatusCode + "\n        " + exception.Message + "\n        when searching for " + criteria);
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Error in SearchSeries: " + ex.ToString());
            }

            return(results);
        }