Пример #1
0
        public SearchEngineResultsDto PerformBingSearch(GetSearchResultsQuery request)
        {
            var pos            = 0;
            var occurrenceList = new List <int>();

            for (var i = 1; i < 10; i++)
            {
                var html    = $"https://infotrack-tests.infotrack.com.au/Bing/Page0{i}.html";
                var htmlDoc = _webHtmlExtractor.Load(html);
                htmlDoc.OptionEmptyCollection = true;

                var interestedNodes = htmlDoc.DocumentNode.SelectNodes("//*[@id=\"b_results\"]/li[*]/div/div/cite");
                foreach (var node in interestedNodes)
                {
                    pos++;
                    if (pos > MaxPosition)
                    {
                        return(new SearchEngineResultsDto(occurrenceList, occurrenceList.Count));
                    }
                    if (node.InnerHtml.Contains(request.Address))
                    {
                        occurrenceList.Add(pos);
                    }
                }
            }

            return(new SearchEngineResultsDto(occurrenceList, occurrenceList.Count));
        }
        public async Task <ActionResult <IEnumerable <SearchResultDto> > > GetSearchResults([FromQuery] SearchQueryDto searchQueryDto)
        {
            var query  = new GetSearchResultsQuery(searchQueryDto);
            var result = await _mediator.Send(query);

            return(Ok(result));
        }
Пример #3
0
        public async void GetSearchResultsHandler_ReturnsNoResult()
        {
            //Arrange
            var searchServiceMock = new Mock <ISearchService>();

            GetSearchResultsHandler handler = new GetSearchResultsHandler(searchServiceMock.Object, _mapper);

            SearchQueryDto        searchQueryDto = new SearchQueryDto();
            GetSearchResultsQuery query          = new GetSearchResultsQuery(searchQueryDto);

            //Act
            var result = await handler.Handle(query, new System.Threading.CancellationToken());

            //Assert
            Assert.Empty(result);
        }
Пример #4
0
        public async Task <ActionResult> GetSearchResults([FromQuery(Name = "q")] string searchTerm)
        {
            if (!this.cacheWrapper.TryGetValue(searchTerm, out List <SearchResponse> searchResponse))
            {
                var query = new GetSearchResultsQuery()
                {
                    SearchTerm = searchTerm
                };

                try
                {
                    var searchResults = await mediator.Send(query);

                    searchResponse = searchResults.Select(x => new SearchResponse()
                    {
                        Title = x.Title, Url = x.Url, Caption = x.Caption
                    }).ToList();
                    this.cacheWrapper.Set(searchTerm, searchResponse);
                }
                catch (SearchTermValidationException ex)
                {
                    return(BadRequest(ex.Message));
                }
                catch (AggregateException ae)
                {
                    var errorMessage = "";

                    foreach (var ex in ae.Flatten().InnerExceptions)
                    {
                        errorMessage += ex.Message + Environment.NewLine;
                    }

                    //TODO: log exception details
                    return(StatusCode(StatusCodes.Status500InternalServerError, errorMessage));
                }
                catch (Exception ex)
                {
                    //TODO: log exception details
                    return(StatusCode(StatusCodes.Status500InternalServerError, "There was an unexpected error when searching for the search term. " +
                                      "Please contact IT quoting the search term."));
                }
            }

            return(Ok(searchResponse));
        }
Пример #5
0
        public async void GetSearchResultsHandler_ReturnsNotNullResult()
        {
            //Arrange
            var searchServiceMock = new Mock <ISearchService>();

            searchServiceMock.Setup(a => a.GetSearchResultsAsync(It.IsAny <SearchQueryDto>())).Returns(GetSearchResultsFromFileAsync()).Verifiable();

            GetSearchResultsHandler handler = new GetSearchResultsHandler(searchServiceMock.Object, _mapper);

            SearchQueryDto        searchQueryDto = new SearchQueryDto();
            GetSearchResultsQuery query          = new GetSearchResultsQuery(searchQueryDto);

            //Act
            var result = await handler.Handle(query, new System.Threading.CancellationToken());

            //Assert
            Assert.NotEmpty(result);
        }
        public async Task <IEnumerable <SearchResultDto> > Handle(GetSearchResultsQuery request, CancellationToken cancellationToken)
        {
            var searchResults = await _searchService.GetSearchResultsAsync(request._searchQueryDto);

            return(_mapper.Map <IEnumerable <SearchResult>, IEnumerable <SearchResultDto> >(searchResults));
        }