diff --git a/apiconfig.php b/apiconfig.php index acbd338..b709b42 100644 --- a/apiconfig.php +++ b/apiconfig.php @@ -65,7 +65,7 @@ $APIS = [ "logistics/uspsaddress" => [ "load" => "logistics.uspsaddress.php", "vars" => [ - "number" => "", + "number (optional)" => "", "street" => "", "unit (optional)" => "", "city (optional)" => "", diff --git a/endpoints/logistics.uspsaddress.php b/endpoints/logistics.uspsaddress.php index fbe2cb3..b445f9d 100644 --- a/endpoints/logistics.uspsaddress.php +++ b/endpoints/logistics.uspsaddress.php @@ -6,7 +6,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -$hash = sha1($VARS["number"] . "|" . ($VARS["unit"] ?? "") . "|" . $VARS["street"] . "|" . ($VARS["city"] ?? "") . "|" . ($VARS["state"] ?? "") . "|" . ($VARS["zip"] ?? "")); +$hash = sha1($VARS["number"] ?? "" . "|" . ($VARS["unit"] ?? "") . "|" . $VARS["street"] . "|" . ($VARS["city"] ?? "") . "|" . ($VARS["state"] ?? "") . "|" . ($VARS["zip"] ?? "")); $cacheresp = $memcache->get("logistics.uspsaddress." . $hash); if ($cacheresp !== false && empty($VARS["nocache"])) { exitWithJson(json_decode($cacheresp, true)); @@ -45,8 +45,15 @@ try { if (!preg_match($statereg, $VARS["state"])) { throw new Exception("Two-letter state name is required."); } - $request = "addresses/v3/address?" - . "streetAddress=" . urlencode($VARS["number"] . " " . urldecode($VARS["street"])) + if (!empty($VARS["number"]) && !empty($VARS["street"])) { + $streetAddress = urldecode($VARS["number"]) . " " . urldecode($VARS["street"]); + } else if (!empty($VARS["street"])) { + $streetAddress = urldecode($VARS["street"]); + } else { + $streetAddress = ""; + } + + $request = "addresses/v3/address?streetAddress=" . urlencode($streetAddress) . (!empty($VARS["unit"]) ? "&secondaryAddress=" . urlencode(urldecode($VARS["unit"])) : "") . (!empty($VARS["city"]) ? "&city=" . urlencode(urldecode($VARS["city"])) : "&city=") . (!empty($VARS["state"]) ? "&state=" . urlencode(urldecode($VARS["state"])) : "&state=")