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

Commit

Permalink
feat: create getInboundGuidanceForAsin
Browse files Browse the repository at this point in the history
  • Loading branch information
justinemmanuelmercado committed Jul 9, 2020
1 parent 15e5796 commit ffd38df
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 2 deletions.
57 changes: 56 additions & 1 deletion src/sections/fulfillment-inbound-shipment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,14 @@ const SKUInboundGuidance = Codec.interface({
GuidanceReasonList: optional(ensureArray('GuidanceReason', GuidanceReason)),
})

const InvalidSKU = Codec.interface({
SellerSKU: string,
ErrorReason: string,
})

const GetInboundGuidanceForSKU = Codec.interface({
SKUInboundGuidanceList: ensureArray('SKUInboundGuidance', SKUInboundGuidance),
InvalidSKUList: optional(string),
InvalidSKUList: optional(ensureArray('InvalidSKU', InvalidSKU)),
})

type GetInboundGuidanceForSKU = GetInterface<typeof GetInboundGuidanceForSKU>
Expand All @@ -45,9 +50,59 @@ const GetInboundGuidanceForSKUResponse = Codec.interface({
}),
})

const InvalidASIN = Codec.interface({
ASIN: string,
ErrorReason: string,
})

const ASINInboundGuidance = Codec.interface({
ASIN: string,
InboundGuidance,
GuidanceReasonList: optional(ensureArray('GuidanceReason', GuidanceReason)),
})

const GetInboundGuidanceForASIN = Codec.interface({
ASINInboundGuidanceList: ensureArray('ASINInboundGuidance', ASINInboundGuidance),
InvalidASINList: ensureArray('InvalidASIN', InvalidASIN),
})

type GetInboundGuidanceForASIN = GetInterface<typeof GetInboundGuidanceForASIN>

const GetInboundGuidanceForASINResponse = Codec.interface({
GetInboundGuidanceForASINResponse: Codec.interface({
GetInboundGuidanceForASINResult: GetInboundGuidanceForASIN,
}),
})

interface GetInboundGuidanceForASINParameters {
ASINList: string[]
MarketplaceId: string
}

export class FulfillmentInboundShipment {
constructor(private httpClient: HttpClient) {}

async getInboundGuidanceForAsin(
parameters: GetInboundGuidanceForASINParameters,
): Promise<[GetInboundGuidanceForASIN, RequestMeta]> {
const [response, meta] = await this.httpClient.request('POST', {
resource: Resource.FulfillmentInboundShipment,
version: FULFILLMENT_INBOUND_SHIPMENT_API_VERSION,
action: 'GetInboundGuidanceForASIN',
parameters: {
'ASINList.Id': parameters.ASINList,
MarketplaceId: parameters.MarketplaceId,
},
})

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

async getInboundGuidanceForSku(
parameters: GetInboundGuidanceForSKUParameters,
): Promise<[GetInboundGuidanceForSKU, RequestMeta]> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,33 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`fulfillmentInboundShipment getInboundGuidanceForAsin returns sku inbound guidance list if succesful 1`] = `
Array [
Object {
"ASINInboundGuidanceList": Array [
Object {
"ASIN": "B00005N5PF",
"GuidanceReasonList": Array [
"SlowMovingASIN",
],
"InboundGuidance": "InboundNotRecommended",
},
],
"InvalidASINList": Array [],
},
Object {
"quotaMax": 1000,
"quotaRemaining": 999,
"quotaResetOn": 2020-04-06T10:22:23.582Z,
"requestId": "0",
"timestamp": 2020-05-06T09:22:23.582Z,
},
]
`;

exports[`fulfillmentInboundShipment getInboundGuidanceForSku returns sku inbound guidance list if succesful 1`] = `
Array [
Object {
"InvalidSKUList": "",
"InvalidSKUList": Array [],
"SKUInboundGuidanceList": Array [
Object {
"ASIN": "B00005N5PF",
Expand Down

0 comments on commit ffd38df

Please sign in to comment.