usps-webtools-promise
Version:
API wrapper for the USPS Web-Tools, with Promises!
58 lines (57 loc) • 2.16 kB
JavaScript
import properCase from "./utils/proper-case.js";
import callUSPS from "./utils/request.js";
export default async function (addresses) {
if (addresses.length > 5) {
throw new Error("Maximum of 5 addresses allowed per request.");
}
if (Array.isArray(addresses) === false) {
throw new TypeError("Must pass an array of addresses. For single address use 'verify' method.");
}
const Addresses = addresses.map((address, index) => ({
'@ID': index.toString(),
Address1: address.Address2 ?? "",
Address2: address.Address1 ?? "",
City: address.City ?? "",
State: address.State ?? "",
Urbanization: address.Urbanization ?? "",
Zip5: address.Zip5 ?? "",
Zip4: address.Zip4 ?? "",
}));
const parameters = {
Revision: 1,
Address: Addresses,
};
let response;
try {
response = (await callUSPS("Verify", "AddressValidate", "Address", this.config, parameters));
if (response) {
return response.map((addr) => {
const fAddr = { ...addr };
const switchAddresses = fAddr.Address1;
fAddr.Address1 = fAddr.Address2;
fAddr.Address2 = switchAddresses;
if (this.config.properCase) {
fAddr.Address1 = fAddr.Address1
? properCase(fAddr.Address1)
: undefined;
fAddr.Address2 = fAddr.Address2
? properCase(fAddr.Address2)
: undefined;
fAddr.City = fAddr.City ? properCase(fAddr.City) : undefined;
fAddr.FirmName = fAddr.FirmName
? properCase(fAddr.FirmName)
: undefined;
}
fAddr.Zip4 =
typeof fAddr.Zip4 === "object"
? undefined
: fAddr.Zip4?.toString();
return fAddr;
});
}
throw new Error("Can't find results");
}
catch (error) {
throw new Error(error);
}
}