UNPKG

usps-webtools-promise

Version:

API wrapper for the USPS Web-Tools, with Promises!

58 lines (57 loc) 2.16 kB
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); } }