Example #1
0
        public void PlacesTextSearchWhenRadiusTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key    = this.ApiKey,
                Query  = "picadelly circus",
                Radius = 5000
            };

            var response = GooglePlaces.TextSearch.Query(request);

            Assert.IsNotNull(response);
            Assert.AreEqual(Status.Ok, response.Status);
        }
Example #2
0
        public void PlacesTextSearchAsyncTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key    = this.ApiKey,
                Sensor = true,
                Query  = "picadelly circus"
            };

            var response = GooglePlaces.TextSearch.QueryAsync(request).Result;

            Assert.IsNotNull(response);
            Assert.AreEqual(Status.Ok, response.Status);
        }
Example #3
0
        public void GetUriWhenOpenNowTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key     = "abc",
                Query   = "test",
                OpenNow = true
            };

            var uri = request.GetUri();

            Assert.IsNotNull(uri);
            Assert.AreEqual($"/maps/api/place/textsearch/json?key={request.Key}&query={request.Query}&language={request.Language.ToCode()}&opennow", uri.PathAndQuery);
        }
Example #4
0
        public void GetUriWhenMaxpriceTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key      = "abc",
                Query    = "test",
                Maxprice = PriceLevel.Free
            };

            var uri = request.GetUri();

            Assert.IsNotNull(uri);
            Assert.AreEqual($"/maps/api/place/textsearch/json?key={request.Key}&query={request.Query}&language={request.Language.ToCode()}&maxprice={((int)request.Minprice.GetValueOrDefault()).ToString()}", uri.PathAndQuery);
        }
Example #5
0
        public void GetQueryStringParametersWhenKeyIsNullTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key = null,
                Query = "test"
            };

            var exception = Assert.Throws<ArgumentException>(() =>
            {
                var parameters = request.GetQueryStringParameters();
                Assert.IsNull(parameters);
            });
            Assert.AreEqual(exception.Message, "Key is required");
        }
Example #6
0
        public void PlacesTextSearchTest()
        {
            var _request = new PlacesTextSearchRequest
            {
                Key      = this._apiKey,
                Sensor   = true,
                Language = "en",
                Query    = "picadelly circus"
            };

            var _response = GooglePlaces.TextSearch.Query(_request);

            Assert.IsNotNull(_response);
            Assert.AreEqual(Status.OK, _response.Status);
        }
Example #7
0
        public void GetUriWhenLocationTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key      = "abc",
                Query    = "test",
                Location = new Location(1, 1),
                Radius   = 50
            };

            var uri = request.GetUri();

            Assert.IsNotNull(uri);
            Assert.AreEqual($"/maps/api/place/textsearch/json?key={request.Key}&query={request.Query}&language={request.Language.ToCode()}&location={Uri.EscapeDataString(request.Location.ToString())}&radius={request.Radius}", uri.PathAndQuery);
        }
Example #8
0
        public void GetUriWhenTypeTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key   = "abc",
                Query = "test",
                Type  = SearchPlaceType.Accounting
            };

            var uri       = request.GetUri();
            var attribute = request.Type?.GetType().GetMembers().FirstOrDefault(x => x.Name == request.Type.ToString())?.GetCustomAttribute <EnumMemberAttribute>();

            Assert.IsNotNull(uri);
            Assert.AreEqual($"/maps/api/place/textsearch/json?key={request.Key}&query={request.Query}&language={request.Language.ToCode()}&type={attribute?.Value.ToLower()}", uri.PathAndQuery);
        }
Example #9
0
        public void PlacesTextSearchWhenLocationAndRadiusTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key      = this.ApiKey,
                Query    = "picadelly circus",
                Location = new Location(51.5100913, -0.1345676),
                Radius   = 5000
            };

            var response = GooglePlaces.TextSearch.Query(request);

            Assert.IsNotNull(response);
            Assert.AreEqual(Status.Ok, response.Status);
        }
Example #10
0
        public void GetQueryStringParametersWhenQueryIsStringEmptyTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key = this.ApiKey,
                Query = string.Empty
            };

            var exception = Assert.Throws<ArgumentException>(() =>
            {
                var parameters = request.GetQueryStringParameters();
                Assert.IsNull(parameters);
            });
            Assert.AreEqual(exception.Message, "Query is required");
        }
Example #11
0
        public void GetQueryStringParametersWhenLocationAndRadiusIsNullTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key = this.ApiKey,
                Query = "picadelly circus",
                Location = new Location(0, 0)
            };

            var exception = Assert.Throws<ArgumentException>(() =>
            {
                var parameters = request.GetQueryStringParameters();
                Assert.IsNull(parameters);
            });
            Assert.AreEqual(exception.Message, "Radius is required when Location is specified");
        }
Example #12
0
        public void GetQueryStringParametersWhenOpenNowTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key     = "key",
                Query   = "query",
                OpenNow = true
            };

            var queryStringParameters = request.GetQueryStringParameters();

            Assert.IsNotNull(queryStringParameters);

            var radius = queryStringParameters.FirstOrDefault(x => x.Key == "opennow");

            Assert.IsNotNull(radius);
        }
Example #13
0
    private async void search(string query)
    {
        var request = new PlacesTextSearchRequest
        {
            Key   = _secretsService.GoogleApiKey,
            Query = query,
        };

        var response = await GooglePlaces.TextSearch.QueryAsync(request);

        foreach (var result in response.Results)
        {
            var location = result.Geometry.Location;
            viewportService.SetCenter(location.Latitude, location.Longitude);
            break;
        }
    }
Example #14
0
        public void GetQueryStringParametersWhenPageTokenTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key       = "key",
                PageToken = "pagetoken"
            };

            var queryStringParameters = request.GetQueryStringParameters();

            Assert.IsNotNull(queryStringParameters);

            var pagetoken         = queryStringParameters.FirstOrDefault(x => x.Key == "pagetoken");
            var pagetokenExpected = request.PageToken;

            Assert.IsNotNull(pagetoken);
            Assert.AreEqual(pagetokenExpected, pagetoken.Value);
        }
Example #15
0
        public void PlacesTextSearchWhenInvalidKeyTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key   = "test",
                Query = "picadelly circus"
            };

            var exception = Assert.Throws <AggregateException>(() => GooglePlaces.TextSearch.QueryAsync(request).Wait());

            Assert.IsNotNull(exception);

            var innerException = exception.InnerExceptions.FirstOrDefault();

            Assert.IsNotNull(innerException);
            Assert.AreEqual(typeof(GoogleApiException), innerException.GetType());
            Assert.AreEqual("RequestDenied: The provided API key is invalid.", innerException.Message);
        }
Example #16
0
        public void PlacesTextSearchWhenAsyncAndCancelledTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key   = this.ApiKey,
                Query = "picadelly circus"
            };

            var cancellationTokenSource = new CancellationTokenSource();
            var task = GooglePlaces.TextSearch.QueryAsync(request, cancellationTokenSource.Token);

            cancellationTokenSource.Cancel();

            var exception = Assert.Throws <OperationCanceledException>(() => task.Wait(cancellationTokenSource.Token));

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "The operation was canceled.");
        }
Example #17
0
        public void PlacesTextSearchWhenKeyIsNullTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key   = null,
                Query = "test"
            };

            var exception = Assert.Throws <AggregateException>(() => GooglePlaces.TextSearch.QueryAsync(request).Wait());

            Assert.IsNotNull(exception);

            var innerException = exception.InnerException;

            Assert.IsNotNull(innerException);
            Assert.AreEqual(typeof(GoogleApiException), innerException.GetType());
            Assert.AreEqual(innerException.Message, "Key is required");
        }
Example #18
0
        public void PlacesTextSearchWhenQueryIsStringEmptyTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key   = this.ApiKey,
                Query = string.Empty
            };

            var exception = Assert.Throws <AggregateException>(() => GooglePlaces.TextSearch.QueryAsync(request).Wait());

            Assert.IsNotNull(exception);

            var innerException = exception.InnerException;

            Assert.IsNotNull(innerException);
            Assert.AreEqual(typeof(GoogleApiException), innerException.GetType());
            Assert.AreEqual(innerException.Message, "Query is required");
        }
Example #19
0
        public void PlacesTextSearchWhenQueryIsNullTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key   = this.ApiKey,
                Query = null
            };

            var exception = Assert.Throws <AggregateException>(() => GooglePlaces.TextSearch.Query(request));

            Assert.IsNotNull(exception);
            Assert.AreEqual("One or more errors occurred.", exception.Message);

            var innerException = exception.InnerException;

            Assert.IsNotNull(innerException);
            Assert.AreEqual(typeof(GoogleApiException), innerException.GetType());
            Assert.AreEqual(innerException.Message, "Query is required");
        }
Example #20
0
        public void PlacesTextSearchWhenLocationAndRadiusIsNullTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key      = this.ApiKey,
                Query    = "picadelly circus",
                Location = new Location(0, 0)
            };

            var exception = Assert.Throws <AggregateException>(() => GooglePlaces.TextSearch.QueryAsync(request).Wait());

            Assert.IsNotNull(exception);

            var innerException = exception.InnerException;

            Assert.IsNotNull(innerException);
            Assert.AreEqual(typeof(GoogleApiException), innerException.GetType());
            Assert.AreEqual(innerException.Message, "Radius is required when Location is specified");
        }
Example #21
0
        public void GetQueryStringParametersWhenMaxpriceTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key      = "key",
                Query    = "query",
                Maxprice = PriceLevel.Free
            };

            var queryStringParameters = request.GetQueryStringParameters();

            Assert.IsNotNull(queryStringParameters);

            var maxprice         = queryStringParameters.FirstOrDefault(x => x.Key == "maxprice");
            var maxpriceExpected = ((int)request.Maxprice.GetValueOrDefault()).ToString();

            Assert.IsNotNull(maxprice);
            Assert.AreEqual(maxpriceExpected, maxprice.Value);
        }
Example #22
0
        public void GetQueryStringParametersWhenRegionTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key    = "key",
                Query  = "query",
                Region = "region"
            };

            var queryStringParameters = request.GetQueryStringParameters();

            Assert.IsNotNull(queryStringParameters);

            var region         = queryStringParameters.FirstOrDefault(x => x.Key == "region");
            var regionExpected = request.Region;

            Assert.IsNotNull(region);
            Assert.AreEqual(regionExpected, region.Value);
        }
Example #23
0
        public void GetQueryStringParametersWhenRadiusTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key    = "key",
                Query  = "query",
                Radius = 100
            };

            var queryStringParameters = request.GetQueryStringParameters();

            Assert.IsNotNull(queryStringParameters);

            var radius         = queryStringParameters.FirstOrDefault(x => x.Key == "radius");
            var radiusExpected = request.Radius?.ToString();

            Assert.IsNotNull(radius);
            Assert.AreEqual(radiusExpected, radius.Value);
        }
Example #24
0
        public void GetQueryStringParametersWhenTypeTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key   = "key",
                Query = "query",
                Type  = SearchPlaceType.Accounting
            };

            var queryStringParameters = request.GetQueryStringParameters();

            Assert.IsNotNull(queryStringParameters);

            var type          = queryStringParameters.FirstOrDefault(x => x.Key == "type");
            var typeAttribute = request.Type?.GetType().GetMembers().FirstOrDefault(x => x.Name == request.Type.ToString())?.GetCustomAttribute <EnumMemberAttribute>();
            var typeExpected  = typeAttribute?.Value.ToLower();

            Assert.IsNotNull(type);
            Assert.AreEqual(typeExpected, type.Value);
        }
Example #25
0
        public void PlacesTextSearchWhenPriceLevelMaxTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key      = this.ApiKey,
                Query    = "new york",
                Maxprice = PriceLevel.Expensive
            };

            var response = GooglePlaces.TextSearch.Query(request);

            Assert.IsNotNull(response);
            Assert.IsEmpty(response.HtmlAttributions);
            Assert.AreEqual(Status.Ok, response.Status);

            var result = response.Results.FirstOrDefault();

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.PlaceId);
            Assert.LessOrEqual(result.PriceLevel, request.Maxprice);
        }
Example #26
0
        public void PlacesTextSearchTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key   = this.ApiKey,
                Query = "picadelly circus"
            };

            var response = GooglePlaces.TextSearch.Query(request);

            Assert.IsNotNull(response);
            Assert.IsEmpty(response.HtmlAttributions);
            Assert.AreEqual(Status.Ok, response.Status);

            var result = response.Results.FirstOrDefault();

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.PlaceId);
            Assert.IsNotNull(result.Geometry);
            Assert.IsNotNull(result.Geometry.Location);
            Assert.AreEqual(result.BusinessStatus, BusinessStatus.Operational);
        }
Example #27
0
        public async Task <PlacesTextSearchResponse> SearchAsync(string phrase)
        {
            Log.Information($"GooglePlacesSearcher : {phrase}");
            var request = new PlacesTextSearchRequest
            {
                Key      = Constant.ApiKey.GoogleApiLendZen,
                Query    = phrase,
                Location = new Location("Australia"),
                Radius   = 50
            };

            try
            {
                var response = await GoogleApi.GooglePlaces.TextSearch.QueryAsync(request);

                switch (response.Status)
                {
                case Status.Ok:
                case Status.ZeroResults:
                    Log.Information("{status} {phrase}", response.Status.GetValueOrDefault(), request.Query);
                    return(response);

                case Status.OverQueryLimit:
                case Status.MaxElementsExceeded:
                    Log.Warning("{status} {searchterm} {response}", response.Status.GetValueOrDefault(), request.Query, response.ErrorMessage);
                    return(response);

                default:
                    Log.Error("{status} {searchterm} {error}", response.Status.GetValueOrDefault(), request.Query, response.ErrorMessage);
                    return(response);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Log.Error(e, "GooglePlacesSearcher error {text}", phrase);
                throw;
            }
        }
Example #28
0
        public void PlacesTextSearchTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key   = this.ApiKey,
                Query = "picadelly circus"
            };

            var response = GooglePlaces.TextSearch.Query(request);

            Assert.IsNotNull(response);
            Assert.IsEmpty(response.HtmlAttributions);
            Assert.AreEqual(Status.Ok, response.Status);

            var result = response.Results.FirstOrDefault();

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.PlaceId);
            Assert.IsNotNull(result.Geometry);
            Assert.IsNotNull(result.Geometry.Location);
            Assert.AreEqual(51.5100913, result.Geometry.Location.Latitude, 0.01);
            Assert.AreEqual(-0.1345676, result.Geometry.Location.Longitude, 0.01);
        }
Example #29
0
        public void PlacesTextSearchWhenAsyncAndTimeoutTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key   = this.ApiKey,
                Query = "picadelly circus"
            };

            var exception = Assert.Throws <AggregateException>(() =>
            {
                var result = GooglePlaces.TextSearch.QueryAsync(request, TimeSpan.FromMilliseconds(1)).Result;
                Assert.IsNull(result);
            });

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "One or more errors occurred.");

            var innerException = exception.InnerException;

            Assert.IsNotNull(innerException);
            Assert.AreEqual(innerException.GetType(), typeof(TaskCanceledException));
            Assert.AreEqual(innerException.Message, "A task was canceled.");
        }
Example #30
0
        public void PlacesTextSearchWhenPageTokenTest()
        {
            var request = new PlacesTextSearchRequest
            {
                Key   = this.ApiKey,
                Query = "l"
            };

            var response = GooglePlaces.TextSearch.Query(request);

            Assert.IsNotNull(response);
            Assert.IsNotNull(response.NextPageToken);

            var requestNextPage = new PlacesTextSearchRequest
            {
                Key       = this.ApiKey,
                PageToken = response.NextPageToken
            };

            var responseNextPage = GooglePlaces.TextSearch.Query(requestNextPage);

            Assert.IsNotNull(responseNextPage);
            Assert.AreNotEqual(response.Results.FirstOrDefault()?.PlaceId, responseNextPage.Results.FirstOrDefault()?.PlaceId);
        }