UNPKG

bananas-commerce

Version:

A client for bananas-commerce with support for TypeScript

77 lines (76 loc) 2.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Klarna = void 0; const casedObjectKeys_js_1 = require("../util/casedObjectKeys.js"); const formatVariableResult_js_1 = require("../util/formatVariableResult.js"); const extension_js_1 = require("../extension.js"); class Klarna extends extension_js_1.Extension { constructor() { super(...arguments); Object.defineProperty(this, "name", { enumerable: true, configurable: true, writable: true, value: "klarna" }); } /** * Initializes or updates a purchase with Klarna as the PSP. If `shipping` is specified, a shipping * reference must be retrieved before initializing the purchase. The data and session identifier * included in the response is used to initialize the Klarna widget. */ async begin(args) { this.assertLoaded(); const { ...body } = args; const response = await this.catchApiError(this.fetcher.endpoint("/api/v1/kco3/begin/").method("post")({ body: (0, casedObjectKeys_js_1.casedObjectKeys)(body, "snake"), })); return (0, formatVariableResult_js_1.formatVariableResult)({ ...response, data: (0, casedObjectKeys_js_1.casedObjectKeys)(response.data, "camel") }, (response) => { switch (response.status) { case 200: case 201: return "success"; case 400: return "invalid-args"; case 409: return "conflict"; case 422: return "unprocessable"; case 503: return "internal-error"; } }); } /** * Confirms a purchase with Klarna as the PSP. If `shipping` is * specified, it must be called after confirming the delivery. */ async confirm(args) { this.assertLoaded(); const { merchantId, orderId } = args; const response = await this.catchApiError(this.fetcher .endpoint("/api/v1/kco3/{merchant_id}/confirm/{order_id}/") .method("post")({ path: { merchant_id: merchantId, order_id: orderId, }, })); return (0, formatVariableResult_js_1.formatVariableResult)({ ...response, data: (0, casedObjectKeys_js_1.casedObjectKeys)(response.data, "camel") }, (response) => { switch (response.status) { case 200: case 201: return "success"; case 400: return "invalid-args"; case 409: return "conflict"; case 422: return "unprocessable-entity"; case 503: return "internal-error"; } }); } } exports.Klarna = Klarna;