Example #1
0
        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
            });
        }
Example #2
0
        public async Task <ActionResult <PaginationDto <OuterBookDto> > > GetBooks([FromQuery] OuterSourceQueryParameters query)
        {
            var books = await _outerBookSourceService.SearchBooks(query);

            return(books);
        }