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