UNPKG

mpp-sdk

Version:

SDK to talk to the Memento Payments Platform

85 lines (84 loc) 3.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const errors_js_1 = require("../errors.js"); const axios_1 = tslib_1.__importDefault(require("axios")); const index_js_1 = require("../types/index.js"); class TokensEndpoint { constructor(config, http) { this.config = config; this.http = http; } getCurrentDeviceId() { return tslib_1.__awaiter(this, void 0, void 0, function* () { const token = yield this.config.storage.retrieveAuthToken(); return (token === null || token === void 0 ? void 0 : token.device_id) || null; }); } hasAuthToken() { return tslib_1.__awaiter(this, void 0, void 0, function* () { const token = yield this.config.storage.retrieveAuthToken(); return (token != null && token.status === "approved" && new Date(token.expires_at) > new Date()); }); } create(data) { return tslib_1.__awaiter(this, void 0, void 0, function* () { try { const response = yield this.http.request({ url: `/${this.config.version}/tokens`, method: "POST", data, }); yield this.config.storage.storeAuthToken(response.data); return new index_js_1.MPPResult(response); } catch (err) { if (axios_1.default.isAxiosError(err) && err.response && err.response.status === 403) { throw new errors_js_1.LockedUserError(err.message, err.response.data); } throw (0, errors_js_1.errorHandler)(err); } }); } secret(id, data) { return tslib_1.__awaiter(this, void 0, void 0, function* () { try { const response = yield this.http.request({ url: `/${this.config.version}/tokens/${id}/secret`, method: "POST", data, }); yield this.config.storage.storeAuthToken(response.data); return new index_js_1.MPPResult(response); } catch (err) { throw (0, errors_js_1.errorHandler)(err); } }); } delete() { return tslib_1.__awaiter(this, void 0, void 0, function* () { const authToken = yield this.config.storage.retrieveAuthToken(); if (!authToken) { // No authentication token to delete so this is a noop return; } try { yield this.http.delete(`/${this.config.version}/tokens`, { auth: { username: authToken.token, password: "", }, }); } catch (e) { throw (0, errors_js_1.errorHandler)(e); } }); } } exports.default = TokensEndpoint;