mpp-sdk
Version:
SDK to talk to the Memento Payments Platform
85 lines (84 loc) • 3.11 kB
JavaScript
;
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;