Skip to content
This repository has been archived by the owner on Feb 6, 2024. It is now read-only.

Commit

Permalink
feat: create getPackageLabels
Browse files Browse the repository at this point in the history
  • Loading branch information
justinemmanuelmercado committed Jul 14, 2020
1 parent 5d0a8c4 commit ce1a01e
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 2 deletions.
21 changes: 21 additions & 0 deletions src/sections/fulfillment-inbound-shipment/codec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -429,3 +429,24 @@ export const VoidTransportRequestResponse = Codec.interface({
VoidTransportRequestResult: VoidTransportRequest,
}),
})

const TransportDocument = Codec.interface({
PdfDocument: string,
Checksum: string,
})

const GetPackageLabels = Codec.interface({
/**
* Docs has a mistake in the response type
* They have `TransportContent` instead of `TransportDocument`
*/
TransportDocument,
})

export type GetPackageLabels = GetInterface<typeof GetPackageLabels>

export const GetPackageLabelsResponse = Codec.interface({
GetPackageLabelsResponse: Codec.interface({
GetPackageLabelsResult: GetPackageLabels,
}),
})
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ import {
GetInboundGuidanceForASINResponse,
GetInboundGuidanceForSKU,
GetInboundGuidanceForSKUResponse,
GetPackageLabels,
GetPackageLabelsResponse,
GetPreorderInfo,
GetPreorderInfoResponse,
GetPrepInstructionsForASIN,
Expand Down Expand Up @@ -43,6 +45,7 @@ import {
EstimateTransportRequestParameters,
GetInboundGuidanceForASINParameters,
GetInboundGuidanceForSKUParameters,
GetPackageLabelsParameters,
GetPreorderInfoParameters,
GetPrepInstructionsForASINParameters,
GetPrepInstructionsForSKUParameters,
Expand All @@ -56,6 +59,26 @@ const FULFILLMENT_INBOUND_SHIPMENT_API_VERSION = '2010-10-01'
export class FulfillmentInboundShipment {
constructor(private httpClient: HttpClient) {}

async getPackageLabels(
parameters: GetPackageLabelsParameters,
): Promise<[GetPackageLabels, RequestMeta]> {
const [response, meta] = await this.httpClient.request('POST', {
resource: Resource.FulfillmentInboundShipment,
version: FULFILLMENT_INBOUND_SHIPMENT_API_VERSION,
action: 'GetPackageLabels',
parameters: {
ShipmentId: parameters.ShipmentId,
},
})

return GetPackageLabelsResponse.decode(response).caseOf({
Right: (x) => [x.GetPackageLabelsResponse.GetPackageLabelsResult, meta],
Left: (error) => {
throw new ParsingError(error)
},
})
}

async voidTransportRequest(
parameters: VoidTransportRequestParameters,
): Promise<[VoidTransportRequest, RequestMeta]> {
Expand Down
16 changes: 16 additions & 0 deletions src/sections/fulfillment-inbound-shipment/type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -371,3 +371,19 @@ export type GetTransportContentParameters = SingleShipmentIdParameters
export type ConfirmTransportRequestParameters = SingleShipmentIdParameters

export type VoidTransportRequestParameters = SingleShipmentIdParameters

enum PageTypeEnum {
'PackageLabel_Letter_2',
'PackageLabel_Letter_6',
'PackageLabel_A4_2',
'PackageLabel_A4_4',
'PackageLabel_Plain_Paper',
}

type PageType = keyof typeof PageTypeEnum

export interface GetPackageLabelsParameters {
ShipmentId: string
PageType: PageType
NumberOfPackages?: number
}
18 changes: 18 additions & 0 deletions test/unit/__snapshots__/fulfillment-inbound-shipment.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,24 @@ Array [
]
`;

exports[`fulfillmentInboundShipment getPackageLabels returns transport content if succesful 1`] = `
Array [
Object {
"TransportDocument": Object {
"Checksum": "WGQwqA+NlzMVL1plHc/7ZA==",
"PdfDocument": "ABEAAAAAAlbHMucGRmUEsFBgAAAAABAAEAPwAAALQXAQAAAA==",
},
},
Object {
"quotaMax": 1000,
"quotaRemaining": 999,
"quotaResetOn": 2020-04-06T10:22:23.582Z,
"requestId": "0",
"timestamp": 2020-05-06T09:22:23.582Z,
},
]
`;

exports[`fulfillmentInboundShipment getPreorderInfo returns preorderinfo if succesful 1`] = `
Array [
Object {
Expand Down
5 changes: 3 additions & 2 deletions test/unit/fulfillment-inbound-shipment.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import {
InboundShipmentHeader,
ParsingError,
PartneredSmallParcelPackageInput,
GetPackageLabelsParameters,
} from '../../src'
import { createMockHttpClient, mockMwsFail, mockMwsServiceStatus, parsingError } from '../utils'

Expand Down Expand Up @@ -64,9 +65,9 @@ const mockInboundShipmentHeader: InboundShipmentHeader = {

describe('fulfillmentInboundShipment', () => {
describe('getPackageLabels', () => {
const parameters = {
const parameters: GetPackageLabelsParameters = {
ShipmentId: '',
PageTyp: 'PackageLabel_Letter_2',
PageType: 'PackageLabel_Letter_2',
}

it('returns transport content if succesful', async () => {
Expand Down

0 comments on commit ce1a01e

Please sign in to comment.