@shipengine/connect-carrier-api
Version:
This is the typescript/javascript definitions for carrier api
52 lines (48 loc) • 1.7 kB
text/typescript
import {
DocumentDpi,
DocumentTemplate,
getDocuments,
GetDocumentsRequest,
} from '@shipengine/connect-runtime';
import { LabelPackage } from './models/labels/label-package';
import { CreateLabelRequest } from './requests';
import { CreateLabelResponse } from './responses';
export const getCustoms = async (
carrierName: string,
request: CreateLabelRequest | GetDocumentsRequest,
): Promise<CreateLabelResponse> => {
const requestWithCarrierName: GetDocumentsRequest = Object.assign(
{ document_dpi: DocumentDpi.Dpi_203 },
request,
{ carrier_name: carrierName, metadata: { carrier_code: 'customs' } },
);
return await getDocuments(requestWithCarrierName, <DocumentTemplate>{ api_code: 'customs' });
};
export const combineDocuments = (
labelsResponse: CreateLabelResponse,
customsResponse: CreateLabelResponse,
): CreateLabelResponse => {
if (customsResponse?.documents) {
//concat documents
labelsResponse.documents = labelsResponse?.documents?.concat(customsResponse?.documents);
const mergeByTrackingNumber = (
labelPackages: LabelPackage[],
customsPackages: LabelPackage[],
) =>
labelPackages.map((labels) => {
const customs = customsPackages.find(
(customs) => labels.tracking_number === customs.tracking_number,
);
if (customs?.documents) {
labels.documents = labels.documents?.concat(customs.documents);
}
return labels;
});
if (labelsResponse.packages && customsResponse.packages)
labelsResponse.packages = mergeByTrackingNumber(
labelsResponse.packages,
customsResponse.packages,
);
}
return labelsResponse;
};