Exemplo n.º 1
0
        /// <summary>
        /// Return the tracking information of the last checkpoint of a single tracking.
        /// </summary>
        /// <param name="tracking">A Tracking to get the last checkpoint of, it should have tracking number and slug at least.</param>
        /// <returns>The last Checkpoint object.</returns>
        public Checkpoint GetLastCheckpoint(Tracking tracking)
        {
            string     parametersExtra;
            Checkpoint checkpoint = null;

            if (!string.IsNullOrEmpty(tracking.Id))
            {
                parametersExtra = tracking.Id;
            }
            else
            {
                var paramRequiredFields = ReplaceFirst(tracking.GetQueryRequiredFields(), "&", "?");
                parametersExtra = string.Format("{0}/{1}{2}", tracking.Slug, tracking.TrackingNumber, paramRequiredFields);
            }

            var response       = Request("GET", string.Format("/last_checkpoint/{0}", parametersExtra), null);
            var checkpointJson = (JObject)response["data"]["checkpoint"];

            if (checkpointJson.Count != 0)
            {
                checkpoint = new Checkpoint(checkpointJson);
            }

            return(checkpoint);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Get a specific tracking from your account. If the trackingGet.id property
        /// is defined it will get that tracking from the system, if not it will take
        /// the tracking tracking.number and the tracking.slug for identify the tracking.
        /// </summary>
        /// <param name="tracking">A Tracking to get.</param>
        /// <param name="fields">A list of fields wanted to be in the response.</param>
        /// <param name="lang">
        /// A string with the language desired. Support Chinese to
        /// English translation for china-ems and china-post only.
        /// </param>
        /// <returns></returns>
        public Tracking GetTrackingByNumber(Tracking tracking, List <FieldTracking> fields, string lang)
        {
            string parametersAll;
            var    qs = new QueryString();

            if (fields != null)
            {
                qs.Add("fields", ParseListFieldTracking(fields));
            }
            if (!string.IsNullOrEmpty(lang))
            {
                qs.Add("lang", lang);
            }

            var paramsQuery = ReplaceFirst(qs.ToString(), "&", "?");

            if (!string.IsNullOrEmpty(tracking.Id))
            {
                parametersAll = string.Format("{0}{1}", tracking.Id, paramsQuery);
            }
            else
            {
                var paramRequiredFields = tracking.GetQueryRequiredFields();
                parametersAll = string.Format("{0}/{1}{2}{3}", tracking.Slug, tracking.TrackingNumber, paramsQuery, paramRequiredFields);
            }

            var response     = Request("GET", string.Format("/trackings/{0}", parametersAll), null);
            var trackingJson = (JObject)response["data"]["tracking"];

            return(trackingJson.Count != 0 ? new Tracking(trackingJson) : null);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Retrack an expired tracking once.
        /// </summary>
        /// <param name="tracking">A Tracking to reactivate, it should have tracking number and slug at least.</param>
        /// <returns></returns>
        public bool Retrack(Tracking tracking)
        {
            var paramRequiredFields = ReplaceFirst(tracking.GetQueryRequiredFields(), "&", "?");
            var response            = Request(
                "POST",
                string.Format("/trackings/{0}/{1}/retrack{2}", tracking.Slug, tracking.TrackingNumber, paramRequiredFields),
                null);

            if ((int)response["meta"]["code"] == 200)
            {
                return((bool)response["data"]["tracking"]["active"]);
            }

            return(false);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Updates a tracking of your account.
        /// </summary>
        /// <param name="tracking">
        /// A Tracking object with the information to update
        /// The fields trackingNumber and slug SHOULD be informed, otherwise an exception will be thrown
        /// The fields an user can update are: smses, emails, title, customerName, orderID, orderIDPath,
        /// customFields.
        /// </param>
        /// <returns>The last Checkpoint object.</returns>
        public Tracking PutTracking(Tracking tracking)
        {
            string parametersExtra;

            if (!string.IsNullOrEmpty(tracking.Id))
            {
                parametersExtra = tracking.Id;
            }
            else
            {
                var paramRequiredFields = ReplaceFirst(tracking.GetQueryRequiredFields(), "&", "?");
                parametersExtra = string.Format("{0}/{1}{2}", tracking.Slug, tracking.TrackingNumber, paramRequiredFields);
            }

            var response = Request("PUT", string.Format("/trackings/{0}", parametersExtra), tracking.GeneratePutJson());

            return(new Tracking((JObject)response["data"]["tracking"]));
        }
Exemplo n.º 5
0
        /// <summary>
        /// Get a specific tracking from your account. If the trackingGet.id property
        /// is defined it will get that tracking from the system, if not it will take
        /// the tracking tracking.number and the tracking.slug for identify the tracking.
        /// </summary>
        /// <param name="tracking">A Tracking to get.</param>
        /// <returns>A Tracking object with the response.</returns>
        public Tracking GetTrackingByNumber(Tracking tracking)
        {
            string parametersExtra;

            if (!string.IsNullOrEmpty(tracking.Id))
            {
                parametersExtra = tracking.Id;
            }
            else
            {
                var paramRequiredFields = ReplaceFirst(tracking.GetQueryRequiredFields(), "&", "?");

                parametersExtra = string.Format("{0}/{1}{2}", tracking.Slug, tracking.TrackingNumber, paramRequiredFields);
            }

            var response     = Request("GET", string.Format("/trackings/{0}", parametersExtra), null);
            var trackingJson = (JObject)response["data"]["tracking"];

            return(trackingJson.Count != 0 ? new Tracking(trackingJson) : null);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Return the tracking information of the last checkpoint of a single tracking.
        /// </summary>
        /// <param name="tracking">A Tracking to get the last checkpoint of, it should have tracking number and slug at least.</param>
        /// <param name="fields">A list of fields of checkpoint wanted to be in the response.</param>
        /// <param name="lang">
        /// A string with the language desired. Support Chinese to English translation
        /// for china-ems and china-post only.
        /// </param>
        /// <returns>The last Checkpoint object.</returns>
        public Checkpoint GetLastCheckpoint(Tracking tracking, List <FieldCheckpoint> fields, string lang)
        {
            var        qs = new QueryString();
            string     parametersExtra;
            Checkpoint checkpoint = null;

            if (fields != null)
            {
                qs.Add("fields", fields.Select(f => f.GetName()));
            }
            if (string.IsNullOrEmpty(lang))
            {
                qs.Add("lang", lang);
            }

            var parameters = ReplaceFirst(qs.ToString(), "&", "?");

            if (!string.IsNullOrEmpty(tracking.Id))
            {
                parametersExtra = string.Format("{0}{1}", tracking.Id, parameters);
            }
            else
            {
                var paramRequiredFields = tracking.GetQueryRequiredFields();
                parametersExtra = string.Format("{0}/{1}{2}{3}", tracking.Slug, tracking.TrackingNumber, parameters, paramRequiredFields);
            }

            var response       = Request("GET", string.Format("/last_checkpoint/{0}", parametersExtra), null);
            var checkpointJson = (JObject)response["data"]["checkpoint"];

            if (checkpointJson.Count != 0)
            {
                checkpoint = new Checkpoint(checkpointJson);
            }

            return(checkpoint);
        }