示例#1
0
        /// <summary>
        /// Find a tv show by providing ID from external tv show providers
        /// </summary>
        /// <param name="showId">External provider's show id</param>
        /// <param name="externalTvShowProvider">External tv show provider</param>
        public async Task <Show> ShowLookupAsync(string showId, ExternalTvShowProvider externalTvShowProvider)
        {
            // lookup/shows?tvrage=24493
            const string relativeUrl = "/lookup/shows";

            var uriBuilder = new UriBuilder(baseApiUrl)
            {
                Path = relativeUrl
            };

            NameValueCollection queryParams = new NameValueCollection {
                { externalTvShowProvider.GetEnumDisplayName(), showId.ToString() }
            };

            uriBuilder.BuildQueryString(queryParams);

            //var response = await httpClient.GetStringAsync(uriBuilder.Uri);
            var httpResponse = await httpClient.GetAsync(uriBuilder.Uri);

            try {
                httpResponse.EnsureSuccessStatusCode();
            } catch (HttpRequestException ex) {
                throw new HttpRequestExtException(httpResponse.StatusCode, ex.Message, ex);
            }

            var response = await httpResponse.Content.ReadAsStringAsync();

            Show show = DomainObjectFactory.CreateShow(response);

            return(show);
        }
示例#2
0
        /// <summary>
        /// Retreive all primary information for a given hsow
        /// with possible embedding of additional information.
        /// </summary>
        /// <param name="showId">Show id</param>
        /// <param name="embed">Embedded additional information</param>
        /// <returns>Show info</returns>
        public async Task <Show> GetShowAsync(int showId, EmbedType?embed = null)
        {
            const string relativeUrl = "/shows";

            var uriBuilder = new UriBuilder(baseApiUrl)
            {
                Path = relativeUrl
            };

            uriBuilder.AppendPathSegment(showId.ToString());

            if (embed != null)
            {
                uriBuilder.BuildQueryString(new { embed = embed.Value.GetEnumDisplayName() });
            }

            //var response = await httpClient.GetStringAsync(uriBuilder.Uri);
            var httpResponse = await httpClient.GetAsync(uriBuilder.Uri);

            try {
                httpResponse.EnsureSuccessStatusCode();
            } catch (HttpRequestException ex) {
                throw new HttpRequestExtException(httpResponse.StatusCode, ex.Message, ex);
            }

            var response = await httpResponse.Content.ReadAsStringAsync();

            Show show = DomainObjectFactory.CreateShow(response);

            return(show);
        }
示例#3
0
        /// <summary>
        /// Search the single tv show in TvMaze database by show's name.
        /// </summary>
        /// <param name="query">Search query - show's name</param>
        /// <param name="embed">Embedded additional information</param>
        /// <returns>Returns exactly one result, or no result at all.</returns>
        public async Task <Show> ShowSingleSearchAsync(string query, EmbedType?embed = null)
        {
            if (string.IsNullOrEmpty(query))
            {
                throw new ArgumentNullException(nameof(query));
            }

            const string relativeUrl = "/singlesearch/shows";

            var uriBuilder = new UriBuilder(baseApiUrl)
            {
                Path = relativeUrl
            };


            NameValueCollection queryParams = new NameValueCollection {
                { "q", query }
            };

            if (embed != null)
            {
                queryParams["embed"] = embed.Value.GetEnumDisplayName();
            }

            uriBuilder.BuildQueryString(queryParams);

            //var response = await httpClient.GetStringAsync(uriBuilder.Uri);
            var httpResponse = await httpClient.GetAsync(uriBuilder.Uri);

            try {
                httpResponse.EnsureSuccessStatusCode();
            } catch (HttpRequestException ex) {
                throw new HttpRequestExtException(httpResponse.StatusCode, ex.Message, ex);
            }

            var response = await httpResponse.Content.ReadAsStringAsync();

            Show show = DomainObjectFactory.CreateShow(response);

            return(show);
        }