public async Task Consume(ConsumeContext <GoogleApiSearchRequest> context) { using (LogContext.PushProperty("RequestId", context.RequestId)) using (LogContext.PushProperty("CorrelationId", context.CorrelationId)) { LogVerbose($"received: {context.SentTime}"); try { var found = _repository.GetAll() .Where(x => x.Request != null && String.Equals(x.Request.SearchTerm, context.Message.SearchTerm, StringComparison.InvariantCultureIgnoreCase)); if (found.Any()) { LogInfo($"skip: {context.Message.SearchTerm}"); await Task.CompletedTask; } else { LogDebug($"insert try: {context.Message.SearchTerm}"); var search = new GooglePlacesSearcher(); var result = await search.SearchAsync(context.Message.SearchTerm); if (result.Status != Status.Ok) { LogWarn($"{result.Status.ToString()} {result.ErrorMessage}"); } var item = new GoogleApiSearchResponse { Id = Guid.NewGuid(), PlacesTextSearchResponse = result, Request = new GoogleApiSearchRequest { SearchTerm = context.Message.SearchTerm } }; _repository.Insert(item); LogInfo($"insert ok: {context.Message.SearchTerm}"); } } catch (Exception e) { Console.WriteLine(e); LogWarn(e, context.Message.SearchTerm); } } }
public static GoogleApiSearchResponse Create(string searchPhrase, GoogleApi.Entities.Places.Search.Text.Response.PlacesTextSearchResponse response) { var item = new GoogleApiSearchResponse { Id = Guid.NewGuid(), PlacesTextSearchResponse = response, Request = new GoogleApiSearchRequest() { SearchTerm = searchPhrase } }; return(item); }