Add INFO tracking event type behind optional version flag
This commit is contained in:
parent
9f4aeca895
commit
c4e9ada93a
@ -2,16 +2,41 @@
|
|||||||
|
|
||||||
$trackinginfo;
|
$trackinginfo;
|
||||||
|
|
||||||
|
$revision = 1;
|
||||||
|
if (!empty($VARS["revision"]) && preg_match("/[0-9]/", $VARS["revision"])) {
|
||||||
|
$revision = $VARS["revision"];
|
||||||
|
}
|
||||||
|
|
||||||
$code = urldecode($VARS["code"]);
|
$code = urldecode($VARS["code"]);
|
||||||
$carrier = "";
|
$carrier = "";
|
||||||
if (!empty($VARS["carrier"])) {
|
if (!empty($VARS["carrier"])) {
|
||||||
$carrier = $VARS["carrier"];
|
$carrier = $VARS["carrier"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function downgradeResponseVersion($data, int $version) {
|
||||||
|
switch ($version) {
|
||||||
|
case 2:
|
||||||
|
return $data;
|
||||||
|
case 1:
|
||||||
|
// No "INFO" status type in first version
|
||||||
|
if (!empty($data["current"]["status"]) && $data["current"]["status"] == "INFO") {
|
||||||
|
$data["current"]["status"] = "TRANSIT";
|
||||||
|
}
|
||||||
|
if (!empty($data["history"])) {
|
||||||
|
for ($i = 0; $i < count($data["history"]); $i++) {
|
||||||
|
if ($data["history"][$i]["status"] == "INFO") {
|
||||||
|
$data["history"][$i]["status"] = "TRANSIT";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$cacheresp = $memcache->get("logistics.tracking.$code.$carrier");
|
$cacheresp = $memcache->get("logistics.tracking.$code.$carrier");
|
||||||
if ($cacheresp !== false && empty($VARS["nocache"])) {
|
if ($cacheresp !== false && empty($VARS["nocache"])) {
|
||||||
exitWithJson(json_decode($cacheresp, true));
|
exitWithJson(downgradeResponseVersion(json_decode($cacheresp, true), $revision));
|
||||||
}
|
}
|
||||||
|
|
||||||
$trackinginfo = Tracking::track($code, $carrier);
|
$trackinginfo = Tracking::track($code, $carrier);
|
||||||
@ -24,7 +49,7 @@ try {
|
|||||||
"msg" => $ex->getMessage()
|
"msg" => $ex->getMessage()
|
||||||
];
|
];
|
||||||
$memcache->set("logistics.tracking.$code.$carrier", json_encode($output), 60 * 10);
|
$memcache->set("logistics.tracking.$code.$carrier", json_encode($output), 60 * 10);
|
||||||
exitWithJson($output);
|
exitWithJson(downgradeResponseVersion($output, $revision));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_null($trackinginfo)) {
|
if (is_null($trackinginfo)) {
|
||||||
|
@ -8,6 +8,7 @@ class TrackingStatus {
|
|||||||
public const TRACKING_STATUS_DELIVERED = 3;
|
public const TRACKING_STATUS_DELIVERED = 3;
|
||||||
public const TRACKING_STATUS_RETURNED = 4;
|
public const TRACKING_STATUS_RETURNED = 4;
|
||||||
public const TRACKING_STATUS_FAILURE = 5;
|
public const TRACKING_STATUS_FAILURE = 5;
|
||||||
|
public const TRACKING_STATUS_INFO = 6;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a status string API response to a constant integer.
|
* Convert a status string API response to a constant integer.
|
||||||
@ -25,8 +26,10 @@ class TrackingStatus {
|
|||||||
case "OUT_FOR_DELIVERY":
|
case "OUT_FOR_DELIVERY":
|
||||||
return TrackingStatus::TRACKING_STATUS_TRANSIT;
|
return TrackingStatus::TRACKING_STATUS_TRANSIT;
|
||||||
case "DELIVERED":
|
case "DELIVERED":
|
||||||
case "AVAILABLE_FOR_PICKUP":
|
|
||||||
return TrackingStatus::TRACKING_STATUS_DELIVERED;
|
return TrackingStatus::TRACKING_STATUS_DELIVERED;
|
||||||
|
case "AVAILABLE_FOR_PICKUP":
|
||||||
|
case "CANCELLED":
|
||||||
|
return TrackingStatus::TRACKING_STATUS_INFO;
|
||||||
case "RETURNED":
|
case "RETURNED":
|
||||||
case "RETURN_TO_SENDER":
|
case "RETURN_TO_SENDER":
|
||||||
return TrackingStatus::TRACKING_STATUS_RETURNED;
|
return TrackingStatus::TRACKING_STATUS_RETURNED;
|
||||||
@ -34,7 +37,6 @@ class TrackingStatus {
|
|||||||
case "DELIVERY ATTEMPT":
|
case "DELIVERY ATTEMPT":
|
||||||
case "ALERT":
|
case "ALERT":
|
||||||
case "ERROR":
|
case "ERROR":
|
||||||
case "CANCELLED":
|
|
||||||
return TrackingStatus::TRACKING_STATUS_FAILURE;
|
return TrackingStatus::TRACKING_STATUS_FAILURE;
|
||||||
default:
|
default:
|
||||||
return TrackingStatus::TRACKING_STATUS_UNKNOWN;
|
return TrackingStatus::TRACKING_STATUS_UNKNOWN;
|
||||||
@ -58,6 +60,8 @@ class TrackingStatus {
|
|||||||
return "RETURNED";
|
return "RETURNED";
|
||||||
case TrackingStatus::TRACKING_STATUS_FAILURE:
|
case TrackingStatus::TRACKING_STATUS_FAILURE:
|
||||||
return "FAILURE";
|
return "FAILURE";
|
||||||
|
case TrackingStatus::TRACKING_STATUS_INFO:
|
||||||
|
return "INFO";
|
||||||
default:
|
default:
|
||||||
return "UNKNOWN";
|
return "UNKNOWN";
|
||||||
}
|
}
|
||||||
@ -175,19 +179,21 @@ class TrackingStatus {
|
|||||||
case "VR":
|
case "VR":
|
||||||
case "WX":
|
case "WX":
|
||||||
case "AP":
|
case "AP":
|
||||||
case "CI": // stuck in customs
|
|
||||||
case "AT": // departed a transfer airport (int'l)
|
case "AT": // departed a transfer airport (int'l)
|
||||||
case "A0": // "Acceptance" from foreign country
|
case "A0": // "Acceptance" from foreign country
|
||||||
case "CO": // "Inbound Out of Customs"
|
case "CO": // "Inbound Out of Customs"
|
||||||
case "D0": // "Processed Through Facility" (int'l)
|
case "D0": // "Processed Through Facility" (int'l)
|
||||||
case "E0": // "Customs Clearance" (int'l)
|
|
||||||
case "F0": // "Customs Clearance Processing Complete" (int'l)
|
|
||||||
case "G0": // "Arrival at Post Office" (int'l)
|
case "G0": // "Arrival at Post Office" (int'l)
|
||||||
case "MF": // "Processed through Facility" (int'l)
|
case "MF": // "Processed through Facility" (int'l)
|
||||||
case "DG": // "Out for Delivery" (int'l)
|
case "DG": // "Out for Delivery" (int'l)
|
||||||
case "ME": // "Held in Customs" (int'l, isn't necessarily bad)
|
|
||||||
case "TL": // "moving within the USPS network" filler message
|
case "TL": // "moving within the USPS network" filler message
|
||||||
return TrackingStatus::TRACKING_STATUS_TRANSIT;
|
return TrackingStatus::TRACKING_STATUS_TRANSIT;
|
||||||
|
case "CI": // stuck in customs
|
||||||
|
case "ME": // "Held in Customs" (int'l, isn't necessarily bad)
|
||||||
|
case "LD": // letter estimated to be delivered today
|
||||||
|
case "E0": // "Customs Clearance" (int'l)
|
||||||
|
case "F0": // "Customs Clearance Processing Complete" (int'l)
|
||||||
|
return TrackingStatus::TRACKING_STATUS_INFO;
|
||||||
case "01":
|
case "01":
|
||||||
case "13":
|
case "13":
|
||||||
case "17":
|
case "17":
|
||||||
@ -201,7 +207,6 @@ class TrackingStatus {
|
|||||||
case "85":
|
case "85":
|
||||||
case "86":
|
case "86":
|
||||||
case "87":
|
case "87":
|
||||||
case "LD": // letter estimated to be delivered today
|
|
||||||
case "I0": // International something or other
|
case "I0": // International something or other
|
||||||
return TrackingStatus::TRACKING_STATUS_DELIVERED;
|
return TrackingStatus::TRACKING_STATUS_DELIVERED;
|
||||||
case "04":
|
case "04":
|
||||||
@ -247,8 +252,9 @@ class TrackingStatus {
|
|||||||
switch ($eventcode) {
|
switch ($eventcode) {
|
||||||
case "M":
|
case "M":
|
||||||
case "MV":
|
case "MV":
|
||||||
case "ZA": // UPS My Choice redirect
|
|
||||||
return TrackingStatus::TRACKING_STATUS_PRE_TRANSIT;
|
return TrackingStatus::TRACKING_STATUS_PRE_TRANSIT;
|
||||||
|
case "ZA": // UPS My Choice redirect
|
||||||
|
return TrackingStatus::TRACKING_STATUS_INFO;
|
||||||
case "I":
|
case "I":
|
||||||
case "P":
|
case "P":
|
||||||
case "O":
|
case "O":
|
||||||
@ -319,9 +325,12 @@ class TrackingStatus {
|
|||||||
case "IP":
|
case "IP":
|
||||||
case "DO": // dropped off
|
case "DO": // dropped off
|
||||||
return TrackingStatus::TRACKING_STATUS_TRANSIT;
|
return TrackingStatus::TRACKING_STATUS_TRANSIT;
|
||||||
|
case "AE": // Arriving early
|
||||||
|
case "AS": // Address corrected
|
||||||
|
case "HP": // Ready for pickup
|
||||||
|
return TrackingStatus::TRACKING_STATUS_INFO;
|
||||||
case "RC": // Recipient
|
case "RC": // Recipient
|
||||||
case "DL": // Delivered
|
case "DL": // Delivered
|
||||||
case "HP": // Ready for pickup
|
|
||||||
return TrackingStatus::TRACKING_STATUS_DELIVERED;
|
return TrackingStatus::TRACKING_STATUS_DELIVERED;
|
||||||
case "RS":
|
case "RS":
|
||||||
return TrackingStatus::TRACKING_STATUS_RETURNED;
|
return TrackingStatus::TRACKING_STATUS_RETURNED;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user