From ea96dc0a2a8c4d1fbd4c5427703b04bf8beb385f Mon Sep 17 00:00:00 2001 From: EJ Mercado Date: Fri, 12 Jun 2020 12:02:25 +0800 Subject: [PATCH] feat: update reports acknowledgements --- src/sections/reports.ts | 40 ++++++++++++++++++++ test/unit/__snapshots__/reports.test.ts.snap | 23 +++++++++++ 2 files changed, 63 insertions(+) diff --git a/src/sections/reports.ts b/src/sections/reports.ts index 01315037..3ec1a72e 100644 --- a/src/sections/reports.ts +++ b/src/sections/reports.ts @@ -308,9 +308,49 @@ const GetReportScheduleCountResponse = Codec.interface({ }), }) +interface UpdateReportAcknowledgementsParameters { + ReportIdList: string[] + Acknowledged?: boolean +} + +const UpdateReportAcknowledgements = Codec.interface({ + Count: optional(number), + ReportInfo: optional(oneOf([array(ReportInfo), ReportInfo, exactly('')])), +}) + +type UpdateReportAcknowledgements = GetInterface + +const UpdateReportAcknowledgementsResponse = Codec.interface({ + UpdateReportAcknowledgementsResponse: Codec.interface({ + UpdateReportAcknowledgementsResult: UpdateReportAcknowledgements, + }), +}) export class Reports { constructor(private httpClient: HttpClient) {} + async updateReportAcknowledgements( + parameters: UpdateReportAcknowledgementsParameters, + ): Promise<[UpdateReportAcknowledgements, RequestMeta]> { + const [response, meta] = await this.httpClient.request('POST', { + resource: Resource.Reports, + version: REPORTS_API_VERSION, + action: 'UpdateReportAcknowledgements', + parameters: { + 'ReportIdList.Id': parameters.ReportIdList, + }, + }) + + return UpdateReportAcknowledgementsResponse.decode(response).caseOf({ + Right: (x) => [ + x.UpdateReportAcknowledgementsResponse.UpdateReportAcknowledgementsResult, + meta, + ], + Left: (error) => { + throw new ParsingError(error) + }, + }) + } + async getReportScheduleCount( parameters: GetReportScheduleCountParameters = {}, ): Promise<[GetReportScheduleCount, RequestMeta]> { diff --git a/test/unit/__snapshots__/reports.test.ts.snap b/test/unit/__snapshots__/reports.test.ts.snap index 1f1f3666..c2653cfa 100644 --- a/test/unit/__snapshots__/reports.test.ts.snap +++ b/test/unit/__snapshots__/reports.test.ts.snap @@ -408,3 +408,26 @@ Array [ }, ] `; + +exports[`reports updateReportAcknowledgements returns count and info of updated reports 1`] = ` +Array [ + Object { + "Count": 1, + "ReportInfo": Object { + "Acknowledged": true, + "AcknowledgedDate": 2009-02-20T02:10:41.000Z, + "AvailableDate": 2009-01-06T03:48:36.000Z, + "ReportId": "841997483", + "ReportRequestId": "2234038326", + "ReportType": "_GET_MERCHANT_LISTINGS_DATA_", + }, + }, + Object { + "quotaMax": 1000, + "quotaRemaining": 999, + "quotaResetOn": 2020-04-06T10:22:23.582Z, + "requestId": "0", + "timestamp": 2020-05-06T09:22:23.582Z, + }, +] +`;