public string GetPostRequestBody()

in Source/Requests/DistanceMatrixRequest.cs [356:454]


        public string GetPostRequestBody()
        {
            if(TravelMode == TravelModeType.Truck)
            {
                return string.Empty;
            }

            //Build the JSON object using string builder as faster than JSON serializer.

            var sb = new StringBuilder();

            sb.Append("{\"origins\":[");

            foreach (var o in Origins)
            {
                sb.AppendFormat(CultureInfo.InvariantCulture, "{{\"latitude\":{0:0.#####},\"longitude\":{1:0.#####}}},", o.Latitude, o.Longitude);
            }

            //Remove trailing comma.
            sb.Length--;

            sb.Append("]");

            if (Destinations != null && Destinations.Count > 0)
            {
                sb.Append(",\"destinations\":[");

                foreach (var d in Destinations)
                {
                    sb.AppendFormat(CultureInfo.InvariantCulture, "{{\"latitude\":{0:0.#####},\"longitude\":{1:0.#####}}},", d.Latitude, d.Longitude);
                }

                //Remove trailing comma.
                sb.Length--;

                sb.Append("]");
            }

            string mode;
            
            switch (TravelMode)
            {
                case TravelModeType.Transit:
                    mode = "transit";
                    break;
                case TravelModeType.Walking:
                    mode = "walking";
                    break;
                case TravelModeType.Driving:
                default:
                    mode = "driving";
                    break;
            }

            sb.AppendFormat(",\"travelMode\":\"{0}\"", mode);

            if (StartTime.HasValue)
            {
                sb.AppendFormat(DateTimeFormatInfo.InvariantInfo, ",\"startTime\":\"{0:O}\"", StartTime.Value);

                if (EndTime.HasValue)
                {
                    sb.AppendFormat(DateTimeFormatInfo.InvariantInfo, ",\"endTime\":\"{0:O}\"", EndTime.Value);
                    sb.AppendFormat(",\"resolution\":{0}", Resolution);
                }
            }

            string tu;

            switch (TimeUnits)
            {
                case TimeUnitType.Minute:
                    tu = "minute";
                    break;
                case TimeUnitType.Second:
                default:
                    tu = "second";
                    break;
            }

            sb.AppendFormat(",\"timeUnit\":\"{0}\"", tu);

            string du;

            switch (DistanceUnits)
            {
                case DistanceUnitType.Miles:
                    du = "mile";
                    break;
                case DistanceUnitType.Kilometers:
                default:
                    du = "kilometer";
                    break;
            }

            sb.AppendFormat(",\"distanceUnit\":\"{0}\"}}", du);            

            return sb.ToString();
        }