protected override QueryStringParametersList GetQueryStringParameters()
{
if (Origins == null || !Origins.Any())
throw new ArgumentException("Must specify an Origins");
if (Destinations == null || !Destinations.Any())
throw new ArgumentException("Must specify a Destinations");
if (DepartureTime != null && ArrivalTime != null)
throw new ArgumentException("Must not specify both an ArrivalTime and a DepartureTime");
if (Mode != DistanceMatrixTravelModes.transit && ArrivalTime != null)
throw new ArgumentException("Must not specify ArrivalTime for modes other than Transit");
if (Mode != DistanceMatrixTravelModes.transit && TransitRoutingPreference != null)
throw new ArgumentException("Must not specify TransitRoutingPreference for modes other than Transit");
if (Mode != DistanceMatrixTravelModes.transit && TransitModes != null && TransitModes.Length > 0)
throw new ArgumentException("Must not specify TransitModes for modes other than Transit");
if ((!(Mode == null || Mode == DistanceMatrixTravelModes.driving) || DepartureTime == null)
&& TrafficModel != null)
throw new ArgumentException("A TrafficModel must not be specified unless the Mode is Driving and a DepartureTime is provided");
var parameters = base.GetQueryStringParameters();
parameters.Add("origins", string.Join("|", Origins));
parameters.Add("destinations", string.Join("|", Destinations));
if (DepartureTime != null)
parameters.Add("departure_time", DepartureTime.ToString());
if (ArrivalTime != null)
parameters.Add("arrival_time", ArrivalTime.ToString());
if (Mode != null)
parameters.Add("mode", Mode.ToString());
if (TrafficModel != null)
parameters.Add("traffic_model", TrafficModel.ToString());
if (TransitRoutingPreference != null)
parameters.Add("transit_routing_preference", TransitRoutingPreference.ToString());
if (TransitModes != null && TransitModes.Length > 0)
parameters.Add("transit_mode", string.Join("|", TransitModes.Select(a => a.ToString())));
if (Avoid != null)
parameters.Add("avoid", Avoid.ToString());
if (Units != null)
parameters.Add("units", Units.ToString());
if (!string.IsNullOrWhiteSpace(Language))
parameters.Add("language", Language);
return parameters;
}