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 }); }