public string Create(GoogleDistanceMatrixInput input) { StringBuilder builder = new StringBuilder(); builder.Append($"{Output}?key={GoogleApiKey}"); if (input.OriginsLoc.Any() || input.OriginsPlaceId.Any()) { builder.Append($"&origins={ConvertLocationsToString(input.OriginsLoc, input.OriginsPlaceId)}"); } if (input.DestinationsLoc.Any() || input.DestinationsPlaceId.Any()) { builder.Append($"&destinations={ConvertLocationsToString(input.DestinationsLoc, input.DestinationsPlaceId)}"); } builder.Append($"&language={input.Language.GetString()}"); builder.Append($"&mode={input.Mode.GetString()}"); if (input.Restrictions != Enums.GoogleRestrictions.none) { builder.Append($"&avoid={input.Restrictions.GetString()}"); } builder.Append($"&units={input.Units}"); if (input.Departure_time != null) { builder.Append($"&departure_time={input.Departure_time}"); } if (input.Mode == Enums.GoogleTravelMode.Transit && input.TransitRouting != Enums.TransitRoutingPreference.none) { builder.Append($"&transit_routing_preference={input.TransitRouting.GetString()}"); } return(builder.ToString()); }
public async Task <GoogleDistanceMatrixRootObject> GetAsync(GoogleDistanceMatrixInput input) { var uri = _googleUriProvider.Create(input); var resultJson = await _httpClient.GetStringAsync(uri); var result = JsonConvert.DeserializeObject <GoogleDistanceMatrixRootObject>(resultJson); result.resultJson = resultJson; result.inputUri = uri; return(result); }