GoogleApi.Entities.Maps.Directions.Request.DirectionsRequest.GetQueryStringParameters C# (CSharp) Method

GetQueryStringParameters() protected method

Get the query string collection of added parameters for the request.
protected GetQueryStringParameters ( ) : QueryStringParametersList
return GoogleApi.Helpers.QueryStringParametersList
        protected override QueryStringParametersList GetQueryStringParameters()
        {
            if (string.IsNullOrWhiteSpace(this.Origin))
                throw new ArgumentException("Must specify an Origin");

            if (string.IsNullOrWhiteSpace(this.Destination))
                throw new ArgumentException("Must specify a Destination");

            if (!Enum.IsDefined(typeof(AvoidWay), this.Avoid))
                throw new ArgumentException("Invalid enumeration value for 'Avoid'");

            if (!Enum.IsDefined(typeof(TravelMode), this.TravelMode))
                throw new ArgumentException("Invalid enumeration value for 'TravelMode'");

            if (this.TravelMode == TravelMode.Transit && this.DepartureTime == default(DateTime) && this.ArrivalTime == default(DateTime))
                throw new ArgumentException("You must set either DepatureTime or ArrivalTime when TravelMode = Transit");

            var parameters = base.GetQueryStringParameters();

            parameters.Add("origin", this.Origin);
            parameters.Add("destination", this.Destination);
            parameters.Add("units", this.Units.ToString().ToLower());
            parameters.Add("mode", this.TransitMode.ToString().ToLower());

            if (this.Region != null)
                parameters.Add("region", this.Region);

            if (this.Alternatives)
                parameters.Add("alternatives", "true");

            if (this.Avoid != AvoidWay.Nothing)
                parameters.Add("avoid", this.Avoid.ToEnumString('|'));

            if (!string.IsNullOrWhiteSpace(this.Language))
                parameters.Add("language", this.Language);

            if (this.Waypoints != null && this.Waypoints.Any())
                parameters.Add("waypoints", string.Join("|", this.OptimizeWaypoints ? new[] { "optimize:true" }.Concat(Waypoints) : this.Waypoints));

            if (this.TravelMode == TravelMode.Transit)
            {
                parameters.Add("transit_mode", this.TransitMode.ToEnumString('|'));

                if (this.TransitRoutingPreference != TransitRoutingPreference.Nothing)
                    parameters.Add("transit_routing_preference", this.TransitRoutingPreference.ToEnumString('|'));

                if (this.ArrivalTime != default(DateTime))
                    parameters.Add("arrival_time", this.ArrivalTime.DateTimeToUnixTimestamp().ToString(CultureInfo.InvariantCulture));

                if (this.DepartureTime != default(DateTime))
                    parameters.Add("departure_time", this.DepartureTime.DateTimeToUnixTimestamp().ToString(CultureInfo.InvariantCulture));
            }

            return parameters;
        }