diff --git a/mappings/cancel.jsonata b/mappings/cancel.jsonata new file mode 100644 index 0000000000000000000000000000000000000000..1af3ce80f0120e491ed58db8e0db54945d64d1a3 --- /dev/null +++ b/mappings/cancel.jsonata @@ -0,0 +1,4 @@ +{ + "context": $context(context, $action), + "message": message +} diff --git a/mappings/on_cancel.jsonata b/mappings/on_cancel.jsonata new file mode 100644 index 0000000000000000000000000000000000000000..9018d1999c5a8bf31510702e6d9785b0a8a2f886 --- /dev/null +++ b/mappings/on_cancel.jsonata @@ -0,0 +1,40 @@ +{ + "data": $.responses.{ + "context": context, + "message": { + "order": { + "type": message.order.type, + "provider": { + "id": message.order.provider.id, + "name": message.order.provider.descriptor.name, + "short_desc": message.order.provider.descriptor.short_desc, + "long_desc": message.order.provider.descriptor.long_desc, + "rating": message.order.provider.rating, + "images": message.order.provider.descriptor.images.{ + "url": url, + "size_type": size_type + }, + "media": message.order.provider.descriptor.media.{ + "url": url + } + }, + "items": message.order.items.{ + "id": id, + "name": descriptor.name, + "short_desc": descriptor.short_desc, + "long_desc": descriptor.long_desc, + "price": price, + "rating": rating, + "rateable": rateable, + "time": time, + "quantity": quantity + }, + "fulfillments": message.order.fulfillments, + "quote": message.order.quote, + "billing": message.order.billing, + "payments": message.order.payments, + "cancellation_terms": message.order.cancellation_terms + } + } + }[] +} diff --git a/src/gcl/gcl.controller.ts b/src/gcl/gcl.controller.ts index 6909ffdb89b2ad8c7a54c687ed09ad78f2a282c0..6e66375bfe6d80f0967d4accf81b73627b12f4a8 100644 --- a/src/gcl/gcl.controller.ts +++ b/src/gcl/gcl.controller.ts @@ -42,4 +42,10 @@ export class GCLController { const statusResult = await this.service.rating(body); return statusResult; } + + @httpPost('cancel') + public async cancel(@requestBody() body: any): Promise<any> { + const statusResult = await this.service.cancel(body); + return statusResult; + } } diff --git a/src/gcl/gcl.service.ts b/src/gcl/gcl.service.ts index dab92b937db40a4ecda32cae7cf12300e6b9b6e7..0131812e17dbef0366ebea4701805ae469e11b71 100644 --- a/src/gcl/gcl.service.ts +++ b/src/gcl/gcl.service.ts @@ -1,6 +1,7 @@ import { inject, injectable } from "inversify"; import { TLService } from "../tl/tl.service"; import { PSClientService } from "../psclient/psclient.service"; +import data from '../../data.json'; @injectable() export class GCLService { @@ -58,4 +59,12 @@ export class GCLService { return response; } + + async cancel(body: any) { + const payload = await this.tlService.transform(body, "cancel"); + const psResponse = await this.psClientService.post(payload); + const response = await this.tlService.transform(psResponse, "on_cancel"); + + return response; + } }