UNPKG

@bootpay/backend-js

Version:

Bootpay Server Side Package for Node.js

157 lines (156 loc) 5.95 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.BootpayCommerceResource = void 0; const axios_1 = __importDefault(require("axios")); class BootpayCommerceResource { constructor() { this.apiVersion = '1.0.0'; this.sdkVersion = '1.0.0'; this.mode = 'production'; this.$role = 'user'; this.$http = axios_1.default.create({ timeout: 60000 }); this.$token = undefined; this.commerceConfiguration = { client_key: '', secret_key: '', mode: 'production' }; this.API_ENTRYPOINTS = { development: 'https://dev-api.bootapi.com/v1', stage: 'https://stage-api.bootapi.com/v1', production: 'https://api.bootapi.com/v1' }; this.$http.interceptors.response.use((response) => { return response.data; }, (error) => { if (error.response !== undefined) { return Promise.reject(error.response.data); } else { return Promise.reject({ error: `Request Rest Api Failed to Bootpay Commerce Server, ${error.message}` }); } }); this.$http.interceptors.request.use((config) => { config.headers.set('Content-Type', 'application/json'); config.headers.set('Accept', 'application/json'); config.headers.set('Accept-Charset', 'utf-8'); config.headers.set('BOOTPAY-SDK-VERSION', this.sdkVersion); config.headers.set('BOOTPAY-API-VERSION', this.apiVersion); config.headers.set('BOOTPAY-SDK-TYPE', '301'); config.headers.set('BOOTPAY-ROLE', this.$role || 'user'); if (this.$token !== undefined) { config.headers.set('Authorization', `Bearer ${this.$token}`); } return config; }, (error) => { return Promise.reject(error); }); } setConfiguration(configuration) { if (configuration.mode === undefined) { configuration.mode = 'production'; } this.commerceConfiguration = configuration; } setApiVersion(version) { this.apiVersion = version; } setToken(token) { this.$token = token; } getToken() { return this.$token; } setRole(role) { this.$role = role; } getRole() { return this.$role; } getBasicAuthHeader() { const { client_key, secret_key } = this.commerceConfiguration; if (client_key && secret_key) { const credentials = `${client_key}:${secret_key}`; const encoded = Buffer.from(credentials).toString('base64'); return `Basic ${encoded}`; } return ''; } entrypoints(url) { const mode = this.commerceConfiguration.mode || 'production'; return [this.API_ENTRYPOINTS[mode], url].join('/'); } get(url, config) { return __awaiter(this, void 0, void 0, function* () { try { const response = yield this.$http.get(this.entrypoints(url), config); return Promise.resolve(response); } catch (e) { return Promise.reject(e); } }); } post(url, data, config) { return __awaiter(this, void 0, void 0, function* () { try { const response = yield this.$http.post(this.entrypoints(url), data, config); return Promise.resolve(response); } catch (e) { return Promise.reject(e); } }); } postWithBasicAuth(url, data, config) { return __awaiter(this, void 0, void 0, function* () { try { const authConfig = Object.assign(Object.assign({}, config), { headers: Object.assign(Object.assign({}, config === null || config === void 0 ? void 0 : config.headers), { Authorization: this.getBasicAuthHeader() }) }); const response = yield this.$http.post(this.entrypoints(url), data, authConfig); return Promise.resolve(response); } catch (e) { return Promise.reject(e); } }); } put(url, data, config) { return __awaiter(this, void 0, void 0, function* () { try { const response = yield this.$http.put(this.entrypoints(url), data, config); return Promise.resolve(response); } catch (e) { return Promise.reject(e); } }); } delete(url, config) { return __awaiter(this, void 0, void 0, function* () { try { const response = yield this.$http.delete(this.entrypoints(url), config); return Promise.resolve(response); } catch (e) { return Promise.reject(e); } }); } } exports.BootpayCommerceResource = BootpayCommerceResource;