Exemple #1
0
        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);
        }