Beispiel #1
0
        public IActionResult ApiResult(string queryText, ApiSearchTypeEnum searchType)
        {
            if (queryText.Length == 0)
            {
                return(Redirect(this.Action <ApiController>(nameof(ApiSearch))));
            }

            // API
            var result = _openLibraryApiService.Search(queryText, searchType);

            if (result.ResultModel.Docs.Count > 0)
            {
                return(View(result));
            }
            else
            {
                return(Redirect(this.Action <ApiController>(nameof(ApiSearch))));
            }
        }
        public ApiResultVM Search(string queryText, ApiSearchTypeEnum searchType)
        {
            var content = new OpenLibrarySearchJsonVM();

            string query = "";

            if (searchType == ApiSearchTypeEnum.Author)
            {
                query = _configuration.GetSection("Paths:OpenLibraryAuthorSearchPath").Value + queryText;
            }
            else
            {
                query = _configuration.GetSection("Paths:OpenLibraryTitleSearchPath").Value + queryText;
            }


            var client = new RestClient(query);

            var           request  = new RestRequest(Method.GET);
            IRestResponse response = client.ExecuteAsync(request).Result;

            if (response.IsSuccessful)
            {
                content = JsonConvert.DeserializeObject <OpenLibrarySearchJsonVM>(response.Content);

                content.Docs         = content.Docs.OrderByDescending(x => x.First_publish_year).Distinct(new DocumentVMComparer()).ToList();
                content.Num_filtered = content.Docs.Count();

                content.Docs.ForEach(x => {
                    x.Author = x.Author_name?.FirstOrDefault() ?? "";
                });
            }

            return(new ApiResultVM()
            {
                QueryString = queryText, SearchType = searchType, ResultModel = content
            });
        }