public async Task<Result<SearchResponse>> HandleAsync(SearchRequestParameter searchRequestParameter, CancellationToken ct) { try { var endpoint = new SearchRequestDto(searchRequestParameter.Keywords, new SearchPaginationRequest()) .BuildRequestEndpoint(_baseUrl); var client = new HttpClient(); var response = new HttpResponseMessage(); await SimpleRetryHelper.RetryOnExceptionAsync(async () => { response = await client.GetAsync(endpoint, ct); }, _logger); response.EnsureSuccessStatusCode(); var responseBody = await response.Content.ReadAsStringAsync(); if (string.IsNullOrWhiteSpace(responseBody)) return Result.Failure<SearchResponse>(ErrorMessages.ResponseBodyIsEmpty); var searchResponse = GoogleSearchResultParser.GetSearchResponseFromHtml(responseBody, searchRequestParameter.Url); return Result.Success(searchResponse); } catch (Exception ex) { _logger.LogError($"Exception caught while handling GoogleSearchEngineHandler", ex); return Result.Failure<SearchResponse>(ErrorMessages.FailureToLoadSearchResults); } }
public Task <SearchResult <UMAPendingRequest> > FindByOwner(string owner, SearchRequestParameter parameter) { var filteredUMAPendingRequests = _umaPendingRequests.AsQueryable(); filteredUMAPendingRequests = filteredUMAPendingRequests.Where(f => f.Owner == owner); return(InternalFind(filteredUMAPendingRequests, parameter)); }
protected SearchRequestParameter ExtractSearchRequestParameter() { var result = new SearchRequestParameter(); EnrichSearchRequestParameter(result); return(result); }
protected void EnrichSearchRequestParameter(SearchRequestParameter parameter) { var query = Request.Query.ToJObject(); var count = query.GetInt(UMASearchRequestNames.Count); var startIndex = query.GetInt(UMASearchRequestNames.StartIndex); var sortKey = query.GetStr(UMASearchRequestNames.SortKey); var sortOrder = query.GetStr(UMASearchRequestNames.SortOrder); if (count != null) { parameter.Count = count.Value; } if (startIndex != null) { parameter.StartIndex = startIndex.Value; } if (!string.IsNullOrWhiteSpace(sortKey)) { parameter.SortKey = sortKey; } if (!string.IsNullOrWhiteSpace(sortOrder)) { if (sortOrder.Equals("asc", StringComparison.InvariantCultureIgnoreCase)) { parameter.SortOrder = SearchRequestOrders.ASC; } else if (sortOrder.Equals("desc", StringComparison.InvariantCultureIgnoreCase)) { parameter.SortOrder = SearchRequestOrders.DESC; } } }
public Task <SearchResult <UMAPendingRequest> > FindByOwner(string owner, SearchRequestParameter parameter, CancellationToken cancellationToken) { var filteredUMAPendingRequests = LstData.AsQueryable(); filteredUMAPendingRequests = filteredUMAPendingRequests.Where(f => f.Owner == owner); return(InternalFind(filteredUMAPendingRequests, parameter)); }
public static IActionResult Serialize(SearchRequestParameter searchRequestParameter, SearchResult <UMAPendingRequest> searchResult) { var result = new JObject { { "totalResults", searchResult.TotalResults }, { "count", searchRequestParameter.Count }, { "startIndex", searchRequestParameter.StartIndex }, { "data", new JArray(searchResult.Records.Select(rec => Serialize(rec))) } }; return(new OkObjectResult(result)); }
public async Task <IActionResult> Search(SearchResultViewModel searchResultViewModel, CancellationToken ct) { if (!ModelState.IsValid) { return(View("Index", searchResultViewModel)); } var requestParameter = new SearchRequestParameter(searchResultViewModel.SearchCriteriaKeywords, searchResultViewModel.SearchCriteriaUrl); var searchResponseResult = await _searchEngineService.SearchAsync(requestParameter, ct); if (searchResponseResult.IsFailure) { return(RedirectToAction("Error")); } searchResultViewModel.ResultRanks = searchResponseResult.Value.ResultPositions; return(View("Index", searchResultViewModel)); }
private Task <SearchResult <UMAPendingRequest> > InternalFind(IQueryable <UMAPendingRequest> result, SearchRequestParameter parameter) { var totalResults = result.Count(); if (parameter.SortKey == "CreateDateTime") { switch (parameter.SortOrder) { case SearchRequestOrders.ASC: result = result.OrderBy(p => p.CreateDateTime); break; case SearchRequestOrders.DESC: result = result.OrderByDescending(p => p.CreateDateTime); break; } } result = result.Skip(parameter.StartIndex).Take(parameter.Count); return(Task.FromResult(new SearchResult <UMAPendingRequest> { Records = result.ToList(), TotalResults = totalResults })); }
public Task <Result <SearchResponse> > HandleAsync(SearchRequestParameter searchRequestParameter, CancellationToken ct) { // this class can be extended later when/if we want to support Bing search throw new System.NotImplementedException(); }
public Task <Result <SearchResponse> > SearchAsync(SearchRequestParameter requestParameter, CancellationToken ct, SearchSourceTypes searchSouceType = SearchSourceTypes.Google) { return(_searchEngineRepository.SearchAsync(requestParameter, ct, searchSouceType)); }
private async Task <SearchResult <UMAPendingRequest> > InternalFind(IQueryable <UMAPendingRequest> result, SearchRequestParameter parameter, CancellationToken cancellationToken) { var totalResults = await result.CountAsync(cancellationToken); if (parameter.SortKey == "CreateDateTime") { switch (parameter.SortOrder) { case SearchRequestOrders.ASC: result = result.OrderBy(p => p.CreateDateTime); break; case SearchRequestOrders.DESC: result = result.OrderByDescending(p => p.CreateDateTime); break; } } var records = await result.Skip(parameter.StartIndex).Take(parameter.Count).ToListAsync(cancellationToken); return(new SearchResult <UMAPendingRequest> { Records = records, TotalResults = totalResults }); }
public Task <SearchResult <UMAPendingRequest> > FindByRequester(string requester, SearchRequestParameter searchRequestParameter, CancellationToken cancellationToken) { var filtered = _dbContext.PendingRequests.Where(f => f.Requester == requester); return(InternalFind(filtered, searchRequestParameter, cancellationToken)); }
public Task <SearchResult <UMAPendingRequest> > FindByResource(string resourceId, SearchRequestParameter parameter, CancellationToken cancellationToken) { var filteredUMAPendingRequests = LstData.AsQueryable(); filteredUMAPendingRequests = filteredUMAPendingRequests.Where(f => f.Resource.Id == resourceId); return(InternalFind(filteredUMAPendingRequests, parameter)); }
public Task <SearchResult <UMAPendingRequest> > Find(SearchRequestParameter parameter, CancellationToken cancellationToken) { var filteredUMAPendingRequests = LstData.AsQueryable(); return(InternalFind(filteredUMAPendingRequests, parameter)); }
public Task <Result <SearchResponse> > SearchAsync(SearchRequestParameter requestParameter, CancellationToken ct, SearchSourceTypes searchSouceType = SearchSourceTypes.Google) { return(GetHandlerToUse(searchSouceType).HandleAsync(requestParameter, ct)); }
public Task <SearchResult <UMAPendingRequest> > Find(SearchRequestParameter searchRequestParameter, CancellationToken cancellationToken) { return(InternalFind(_dbContext.PendingRequests, searchRequestParameter, cancellationToken)); }