public async Task <DistanceResponse> GetDistanceAsync(DistanceRequest request) { var distanceRequest = new DistanceMatrixRequest { Origins = new[] { new Location(request.Origin.Latitude, request.Origin.Longitude) }, Destinations = new[] { new Location(request.Destination.Latitude, request.Destination.Longitude) }, TravelMode = TravelMode.Driving, Language = Language.Ukrainian, Units = Units.Metric, Key = ServicesConstants.GOOGLE_MAPS_API_KEY }; var distanceResponse = await GoogleMaps.DistanceMatrix.QueryAsync(distanceRequest); if (distanceResponse?.Status != Status.Ok) { return(null); } var data = distanceResponse.Rows?.First()?.Elements?.First(); var response = new DistanceResponse { Duration = data?.Duration?.Value, Distance = Math.Round(data.Distance.Value / MetresInKilometer, RoundingDigits) }; return(response); }
public async Task <DistanceResponse> Get(DistanceRequest request, AdminKey adminKey = null, HttpClient httpClient = null) { using (var api = new GetAddesssApi(adminKey ?? AdminKey, HttpClient ?? httpClient)) { return(await api.Distance.Get(request)); } }
public DistanceRequest CreateDistanceRequest(TaxiRequest request) { var distance = new DistanceRequest { Origin = new Location(request.Origin.Latitude, request.Origin.Longitude), Destination = new Location(request.Destination.Latitude, request.Destination.Longitude) }; return(distance); }
public async static Task <DistanceResponse> Get(GetAddesssApi api, string path, ApiKey apiKey, DistanceRequest request) { if (api == null) { throw new ArgumentNullException(nameof(api)); } if (path == null) { throw new ArgumentNullException(nameof(path)); } if (apiKey == null) { throw new ArgumentNullException(nameof(apiKey)); } api.SetAuthorizationKey(apiKey); var fullPath = $"{path}{request.PostcodeFrom}/{request.PostcodeTo}"; var response = await api.Get(fullPath); var body = await response.Content.ReadAsStringAsync(); if (response.IsSuccessStatusCode) { var distance = Distance.FromJson(body); return(new DistanceResponse.Success((int)response.StatusCode, response.ReasonPhrase, body, distance)); } return(new DistanceResponse.Failed((int)response.StatusCode, response.ReasonPhrase, body)); }
public async Task <DistanceResponse> Get(DistanceRequest request) { return(await Get(Api, Path, this.ApiKey, request)); }