UNPKG

bitcore-wallet-service

Version:
311 lines 13.4 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TransakService = void 0; const _ = __importStar(require("lodash")); const request = __importStar(require("request")); const config_1 = __importDefault(require("../config")); const clienterror_1 = require("../lib/errors/clienterror"); const server_1 = require("../lib/server"); class TransakService { constructor() { this.request = request; } transakGetKeys(req) { if (!config_1.default.transak) throw new Error('Transak missing credentials'); let env; env = req.body.env === 'production' ? 'production' : 'sandbox'; if (req.body.context === 'web') { env += 'Web'; } delete req.body.env; delete req.body.context; const keys = { API: config_1.default.transak[env].api, API_KEY: config_1.default.transak[env].apiKey, SECRET_KEY: config_1.default.transak[env].secretKey, WIDGET_API: config_1.default.transak[env].widgetApi }; return keys; } transakGetAccessToken(req) { return new Promise((resolve, reject) => { const keys = this.transakGetKeys(req); const API = keys.API; const API_KEY = keys.API_KEY; const SECRET_KEY = keys.SECRET_KEY; const headers = { 'Content-Type': 'application/json', 'api-secret': SECRET_KEY, }; req.body = { apiKey: API_KEY }; const URL = API + '/partners/api/v2/refresh-token'; this.request.post(URL, { headers, body: req.body, json: true }, (err, data) => { if (err) { return reject(err.body ? err.body : err); } else { return resolve(data.body ? data.body : data); } }); }); } transakGetCryptoCurrencies(req) { return new Promise((resolve, reject) => { const keys = this.transakGetKeys(req); const API = keys.API; const headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', }; const URL = API + '/api/v2/currencies/crypto-currencies'; this.request.get(URL, { headers, json: true }, (err, data) => { if (err) { return reject(err.body ? err.body : err); } else { return resolve(data.body ? data.body : data); } }); }); } transakGetFiatCurrencies(req) { return new Promise((resolve, reject) => { const keys = this.transakGetKeys(req); const API = keys.API; const API_KEY = keys.API_KEY; const headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', }; const URL = API + `/api/v2/currencies/fiat-currencies?apiKey=${API_KEY}`; this.request.get(URL, { headers, json: true }, (err, data) => { if (err) { return reject(err.body ? err.body : err); } else { return resolve(data.body ? data.body : data); } }); }); } transakGetQuote(req) { return new Promise((resolve, reject) => { const keys = this.transakGetKeys(req); const API = keys.API; const API_KEY = keys.API_KEY; if (!(0, server_1.checkRequired)(req.body, ['fiatCurrency', 'cryptoCurrency', 'network', 'paymentMethod'])) { return reject(new clienterror_1.ClientError("Transak's request missing arguments")); } const headers = { Accept: 'application/json', }; let qs = []; qs.push('partnerApiKey=' + API_KEY); qs.push('fiatCurrency=' + req.body.fiatCurrency); qs.push('cryptoCurrency=' + req.body.cryptoCurrency); qs.push('isBuyOrSell=BUY'); qs.push('network=' + req.body.network); qs.push('paymentMethod=' + req.body.paymentMethod); if (req.body.fiatAmount) qs.push('fiatAmount=' + req.body.fiatAmount); if (req.body.cryptoAmount) qs.push('cryptoAmount=' + req.body.cryptoAmount); const URL = API + `/api/v2/currencies/price?${qs.join('&')}`; this.request.get(URL, { headers, json: true }, (err, data) => { if (err) { return reject(err.body ? err.body : err); } else { return resolve(data.body ? data.body : data); } }); }); } transakGetSignedPaymentUrl(req) { const appRequiredParams = [ 'walletAddress', 'redirectURL', 'fiatAmount', 'fiatCurrency', 'network', 'cryptoCurrencyCode', 'partnerOrderId', 'partnerCustomerId', ]; const requiredParams = req.body.context === 'web' ? [] : appRequiredParams; const keys = this.transakGetKeys(req); const API_KEY = keys.API_KEY; const WIDGET_API = keys.WIDGET_API; if (!(0, server_1.checkRequired)(req.body, requiredParams)) { throw new clienterror_1.ClientError("Transak's request missing arguments"); } const headers = { 'Content-Type': 'application/json' }; let qs = []; if (req.body.walletAddress) qs.push('walletAddress=' + encodeURIComponent(req.body.walletAddress)); if (req.body.disableWalletAddressForm) qs.push('disableWalletAddressForm=' + encodeURIComponent(req.body.disableWalletAddressForm)); if (req.body.redirectURL) qs.push('redirectURL=' + encodeURIComponent(req.body.redirectURL)); if (req.body.exchangeScreenTitle) qs.push('exchangeScreenTitle=' + encodeURIComponent(req.body.exchangeScreenTitle)); if (req.body.fiatAmount) qs.push('fiatAmount=' + encodeURIComponent(req.body.fiatAmount)); if (req.body.fiatCurrency) qs.push('fiatCurrency=' + encodeURIComponent(req.body.fiatCurrency)); if (req.body.network) qs.push('network=' + encodeURIComponent(req.body.network)); if (req.body.paymentMethod) qs.push('paymentMethod=' + encodeURIComponent(req.body.paymentMethod)); if (req.body.cryptoCurrencyCode) qs.push('cryptoCurrencyCode=' + encodeURIComponent(req.body.cryptoCurrencyCode)); if (req.body.cryptoCurrencyList) qs.push('cryptoCurrencyList=' + encodeURIComponent(req.body.cryptoCurrencyList)); if (req.body.hideExchangeScreen) qs.push('hideExchangeScreen=' + encodeURIComponent(req.body.hideExchangeScreen)); if (req.body.themeColor) qs.push('themeColor=' + encodeURIComponent(req.body.themeColor)); if (req.body.hideMenu) qs.push('hideMenu=' + encodeURIComponent(req.body.hideMenu)); if (req.body.partnerOrderId) qs.push('partnerOrderId=' + encodeURIComponent(req.body.partnerOrderId)); if (req.body.partnerCustomerId) qs.push('partnerCustomerId=' + encodeURIComponent(req.body.partnerCustomerId)); if (req.body.environment) qs.push('environment=' + encodeURIComponent(req.body.environment)); if (req.body.widgetHeight) qs.push('widgetHeight=' + encodeURIComponent(req.body.widgetHeight)); if (req.body.widgetWidth) qs.push('widgetWidth=' + encodeURIComponent(req.body.widgetWidth)); if (req.body.productsAvailed) qs.push('productsAvailed=' + encodeURIComponent(req.body.productsAvailed)); if (req.body.defaultFiatAmount) qs.push('defaultFiatAmount=' + encodeURIComponent(req.body.defaultFiatAmount)); if (req.body.countryCode) qs.push('countryCode=' + encodeURIComponent(req.body.countryCode)); if (req.body.excludeFiatCurrencies) qs.push('excludeFiatCurrencies=' + encodeURIComponent(req.body.excludeFiatCurrencies)); if (req.body.defaultNetwork) qs.push('defaultNetwork=' + encodeURIComponent(req.body.defaultNetwork)); if (req.body.networks) qs.push('networks=' + encodeURIComponent(req.body.networks)); if (req.body.defaultPaymentMethod) qs.push('defaultPaymentMethod=' + encodeURIComponent(req.body.defaultPaymentMethod)); if (req.body.disablePaymentMethods) qs.push('disablePaymentMethods=' + encodeURIComponent(req.body.disablePaymentMethods)); if (req.body.defaultCryptoAmount) qs.push('defaultCryptoAmount=' + encodeURIComponent(req.body.defaultCryptoAmount)); if (req.body.cryptoAmount) qs.push('cryptoAmount=' + encodeURIComponent(req.body.cryptoAmount)); if (req.body.defaultCryptoCurrency) qs.push('defaultCryptoCurrency=' + encodeURIComponent(req.body.defaultCryptoCurrency)); if (req.body.isFeeCalculationHidden) qs.push('isFeeCalculationHidden=' + encodeURIComponent(req.body.isFeeCalculationHidden)); if (req.body.walletAddressesData) qs.push('walletAddressesData=' + encodeURIComponent(req.body.walletAddressesData)); if (req.body.email) qs.push('email=' + encodeURIComponent(req.body.email)); if (req.body.userData) qs.push('userData=' + encodeURIComponent(req.body.userData)); if (req.body.isAutoFillUserData) qs.push('isAutoFillUserData=' + encodeURIComponent(req.body.isAutoFillUserData)); const URL_SEARCH = `?apiKey=${API_KEY}&${qs.join('&')}`; const urlWithSignature = `${WIDGET_API}${URL_SEARCH}`; return { urlWithSignature }; } transakGetOrderDetails(req) { return new Promise(async (resolve, reject) => { const env = _.cloneDeep(req.body.env); const keys = this.transakGetKeys(req); const API = keys.API; if (!(0, server_1.checkRequired)(req.body, ['orderId'])) { return reject(new clienterror_1.ClientError("Transak's request missing arguments")); } let accessToken; if (req.body.accessToken) { accessToken = req.body.accessToken; } else { try { const accessTokenData = await this.transakGetAccessToken({ body: env }); accessToken = accessTokenData?.data?.accessToken; } catch (err) { return reject(err?.body ? err.body : err); } } const headers = { Accept: 'application/json', 'access-token': accessToken, }; const URL = API + `/partners/api/v2/order/${req.body.orderId}`; this.request.get(URL, { headers, json: true }, (err, data) => { if (err) { return reject(err.body ? err.body : err); } else { return resolve(data.body ? data.body : data); } }); }); } } exports.TransakService = TransakService; //# sourceMappingURL=transak.js.map