diff --git a/lib/Carriers.lib.php b/lib/Carriers.lib.php index f91fc6d..2b19aff 100644 --- a/lib/Carriers.lib.php +++ b/lib/Carriers.lib.php @@ -3,6 +3,10 @@ class Carriers { const CARRIER_REGEXES = [ + [ + "carrier" => "usps_gsbarcode", // USPS barcodes with GS character + "pattern" => "/^\\x1D?420[0-9]{5,11}\\x1D?[0-9]{10,}\\x1D?$/" + ], [ "carrier" => "ups_mi_datamatrix", "pattern" => "/^([^\\t]*\\t[^\\t]*){13}$/" @@ -47,14 +51,6 @@ class Carriers { "carrier" => "usps", "pattern" => "/^420[0-9]{5}[0-9]+$/" ], - [ - "carrier" => "usps", - "pattern" => "/^\\x1D?420[0-9]{5,11}\\x1D?[0-9]{10,}\\x1D?$/" - ], - [ - "carrier" => "usps", - "pattern" => "/^420[0-9]{5,11}\\x1D[0-9]{10,}\\x1D?$/" - ], [ "carrier" => "fedex", "pattern" => "/^[0-9]{15}$/" diff --git a/lib/Tracking.lib.php b/lib/Tracking.lib.php index 4e74ddd..1caa165 100644 --- a/lib/Tracking.lib.php +++ b/lib/Tracking.lib.php @@ -19,6 +19,8 @@ class Tracking { } switch ($carriercode) { + case "usps_gsbarcode": + return Tracking_USPS_gsbarcode::track($code); case "ups_mi_datamatrix": return Tracking_UPS_MailInnovations_DataMatrix::track($code); case "fedex_pdf417": diff --git a/lib/TrackingBarcode.lib.php b/lib/TrackingBarcode.lib.php index c9050f7..044f48b 100644 --- a/lib/TrackingBarcode.lib.php +++ b/lib/TrackingBarcode.lib.php @@ -30,7 +30,7 @@ class TrackingBarcode { public function getCarrier(): string { $carrier = ""; foreach (Carriers::CARRIER_REGEXES as $p) { - if (preg_match($p["pattern"]."i", $this->code)) { + if (preg_match($p["pattern"], strtoupper($this->code))) { $carrier = $p["carrier"]; break; } diff --git a/lib/Tracking_USPS_gsbarcode.lib.php b/lib/Tracking_USPS_gsbarcode.lib.php new file mode 100644 index 0000000..eebcd5c --- /dev/null +++ b/lib/Tracking_USPS_gsbarcode.lib.php @@ -0,0 +1,23 @@ +