public async Task <GeocodeBatchResponse> GetReverseGeocodeBatchAsync(
            ReverseGeocodeBatchRequest request)
        {
            if (request is null)
            {
                return(null);
            }

            if (request.Coordinates.Count > MaxBatchCount)
            {
                throw new InvalidOperationException($"You're attempting to batch reverse geocode {request.Coordinates.Count()} coordinates, which is more than the permitted limit of {MaxBatchCount}.");
            }

            var response = await GetResponseAsync(request);

            return(JsonConvert.DeserializeObject <GeocodeBatchResponse>(response));
        }
Example #2
0
        /// <summary>
        /// Reverse geocode a batch of coordinates.
        /// </summary>
        /// <param name="request">A GeocodeRequest instance.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>GeocodeBatchResponse</returns>
        public async Task <GeocodeBatchResponse> ReverseGeocodeBatchAsync(
            ReverseGeocodeBatchRequest request,
            CancellationToken cancellationToken = default)
        {
            if (request is null)
            {
                return(InvalidResponse <GeocodeBatchResponse>());
            }

            if (request.Coordinates.Count() > MaxBatchSize)
            {
                return(InvalidBatchSizeResponse <GeocodeBatchResponse>());
            }

            if (cancellationToken.IsCancellationRequested)
            {
                return(CancelledResponse2 <GeocodeBatchResponse>());
            }

            return(await RequestAsync <GeocodeBatchResponse>(request, cancellationToken).ConfigureAwait(false));
        }