public async Task <GoogleDirectionsRootObject> GetAsync(GoogleDirectionsInput input) { var uri = _googleUriProvider.Create(input); var resultJson = await _httpClient.GetStringAsync(uri); var result = JsonConvert.DeserializeObject <GoogleDirectionsRootObject>(resultJson); result.resultJson = resultJson; result.inputUri = uri; return(result); }
public string Create(GoogleDirectionsInput input) { StringBuilder builder = new StringBuilder(); builder.Append($"{Output}?key={GoogleApiKey}"); if (!String.IsNullOrWhiteSpace(input.OriginPlaceId) && !String.IsNullOrWhiteSpace(input.DestinationPlaceId)) { builder.Append($"&origin=place_id:{input.OriginPlaceId}"); builder.Append($"&destination=place_id:{input.DestinationPlaceId}"); } else { builder.Append($"&origin={input.OriginLoc.lat.ToString(System.Globalization.CultureInfo.InvariantCulture)},{input.OriginLoc.lng.ToString(System.Globalization.CultureInfo.InvariantCulture)}"); builder.Append($"&destination={input.DestinationLoc.lat.ToString(System.Globalization.CultureInfo.InvariantCulture)},{input.DestinationLoc.lng.ToString(System.Globalization.CultureInfo.InvariantCulture)}"); } builder.Append($"&language={input.Language.GetString()}"); builder.Append($"&mode={input.Mode.GetString()}"); if (input.WaypointsLoc.Any()) { builder.Append($"&waypoints="); if (input.OptimizeWaypoints) { builder.Append($"optimize:true|"); } var waypoints = ConvertLocationsToString(input.WaypointsLoc); builder.Append($"{waypoints}"); } 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()); }