/// <summary>
        /// Searches for jokes that contain the specified term.
        /// </summary>
        /// <param name="term">Keywork to find in jokes.</param>
        /// <param name="page">Results page when more than one page is available.</param>
        /// <returns></returns>
        public async Task <JokeSearchResultsModel> SearchJokes(string term, int page = 1)
        {
            try
            {
                string uri = $"{_baseAddress}search?term={term}&page={page}&limit=30";

                if (Uri.IsWellFormedUriString(uri, UriKind.Absolute))
                {
                    _client.DefaultRequestHeaders.Accept.Clear();
                    _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                    Task <Stream> stringTask = _client.GetStreamAsync(uri);

                    JokeSearchResultsModel results = await JsonSerializer.DeserializeAsync <JokeSearchResultsModel>(await stringTask);

                    return(results);
                }

                return(null);
            }
            catch
            {
                return(null);
            }
        }
示例#2
0
        /// <summary>
        /// Returns the result of a joke search as a json object.
        /// </summary>
        /// <param name="searchTerm">Keywork to search in jokes.</param>
        /// <param name="page">Page to return if more than one page available.</param>
        /// <returns></returns>
        public async Task <IActionResult> SearchJokes(string searchTerm, int page = 1)
        {
            JokeApplicationServices jokeApi       = new JokeApplicationServices();
            JokeSearchResultsModel  searchResults = await jokeApi.SearchJokes(searchTerm, page);

            if (searchResults != null)
            {
                return(Json(searchResults));
            }

            return(StatusCode(500));
        }