public async Task <PaginationDto <OuterBookDto> > SearchBooks(OuterSourceQueryParameters query) { var response = await SendGetRequest( $"search/index.xml?key={_settings.ApiKey}&page={query?.Page}&q={query?.SearchTerm}&per_page={query?.PageSize}"); response.EnsureSuccessStatusCode(); var xmlDocument = new XmlDocument(); xmlDocument.LoadXml(await response.Content.ReadAsStringAsync()); var totalCountNode = xmlDocument.SelectSingleNode("//search/total-results"); int.TryParse(totalCountNode?.InnerText, out var totalCountOfBooks); var bookNodes = xmlDocument.SelectNodes("//results//best_book[@type='Book']"); var bookList = new List <OuterBookDto>(); foreach (XmlNode bookNode in bookNodes) { bookList.Add(GetBookFromXml(bookNode)); } return(new PaginationDto <OuterBookDto> { Page = bookList, TotalCount = totalCountOfBooks }); }
public async Task <ActionResult <PaginationDto <OuterBookDto> > > GetBooks([FromQuery] OuterSourceQueryParameters query) { var books = await _outerBookSourceService.SearchBooks(query); return(books); }