UNPKG

bitcore-wallet-service

Version:
247 lines 10.6 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.RampService = void 0; const request = __importStar(require("request")); const config_1 = __importDefault(require("../config")); const utils_1 = require("../lib/common/utils"); const clienterror_1 = require("../lib/errors/clienterror"); const server_1 = require("../lib/server"); class RampService { constructor() { this.request = request; } rampGetKeys(req) { if (!config_1.default.ramp) throw new Error('Ramp 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.ramp[env].api, WIDGET_API: config_1.default.ramp[env].widgetApi, API_KEY: config_1.default.ramp[env].apiKey, }; return keys; } rampGetQuote(req) { return new Promise((resolve, reject) => { const keys = this.rampGetKeys(req); const API = keys.API; const API_KEY = keys.API_KEY; if (!(0, server_1.checkRequired)(req.body, ['cryptoAssetSymbol', 'fiatValue', 'fiatCurrency'])) { return reject(new clienterror_1.ClientError("Ramp's request missing arguments")); } const headers = { 'Content-Type': 'application/json' }; const URL = API + `/host-api/v3/onramp/quote/all?hostApiKey=${API_KEY}`; 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); } }); }); } rampGetSellQuote(req) { return new Promise((resolve, reject) => { const keys = this.rampGetKeys(req); const API = keys.API; const API_KEY = keys.API_KEY; if (!(0, server_1.checkRequired)(req.body, ['cryptoAssetSymbol', 'fiatCurrency']) || (!(0, server_1.checkRequired)(req.body, ['fiatValue']) && !(0, server_1.checkRequired)(req.body, ['cryptoAmount']))) { return reject(new clienterror_1.ClientError("Ramp's request missing arguments")); } const headers = { 'Content-Type': 'application/json' }; const URL = API + `/host-api/v3/offramp/quote/all?hostApiKey=${API_KEY}`; 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); } }); }); } rampGetSignedPaymentUrl(req) { const webRequiredParams = [ 'selectedCountryCode', ]; const appRequiredParams = [ 'enabledFlows', 'defaultFlow', 'selectedCountryCode', 'defaultAsset', ]; const extraRequiredParams = req.body.flow && req.body.flow === 'sell' ? ['offrampAsset'] : ['finalUrl', 'userAddress', 'swapAmount', 'swapAsset']; appRequiredParams.concat(extraRequiredParams); const requiredParams = req.body.context === 'web' ? webRequiredParams : appRequiredParams; const keys = this.rampGetKeys(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("Ramp's request missing arguments"); } const headers = { 'Content-Type': 'application/json' }; let qs = []; qs.push('hostApiKey=' + API_KEY); qs.push('selectedCountryCode=' + encodeURIComponent(req.body.selectedCountryCode)); if (req.body.finalUrl) qs.push('finalUrl=' + encodeURIComponent(req.body.finalUrl)); if (req.body.userAddress) qs.push('userAddress=' + encodeURIComponent(req.body.userAddress)); if (req.body.swapAsset) qs.push('swapAsset=' + encodeURIComponent(req.body.swapAsset)); if (req.body.offrampAsset) qs.push('offrampAsset=' + encodeURIComponent(req.body.offrampAsset)); if (req.body.enabledFlows) qs.push('enabledFlows=' + encodeURIComponent(req.body.enabledFlows)); if (req.body.defaultFlow) qs.push('defaultFlow=' + encodeURIComponent(req.body.defaultFlow)); if (req.body.hostLogoUrl) qs.push('hostLogoUrl=' + encodeURIComponent(req.body.hostLogoUrl)); if (req.body.hostAppName) qs.push('hostAppName=' + encodeURIComponent(req.body.hostAppName)); if (req.body.swapAmount) qs.push('swapAmount=' + encodeURIComponent(req.body.swapAmount)); if (req.body.fiatValue) qs.push('fiatValue=' + encodeURIComponent(req.body.fiatValue)); if (req.body.fiatCurrency) qs.push('fiatCurrency=' + encodeURIComponent(req.body.fiatCurrency)); if (req.body.defaultAsset) qs.push('defaultAsset=' + encodeURIComponent(req.body.defaultAsset)); if (req.body.userEmailAddress) qs.push('userEmailAddress=' + encodeURIComponent(req.body.userEmailAddress)); if (req.body.useSendCryptoCallback) qs.push('useSendCryptoCallback=' + encodeURIComponent(req.body.useSendCryptoCallback)); if (req.body.paymentMethodType) qs.push('paymentMethodType=' + encodeURIComponent(req.body.paymentMethodType)); if (req.body.hideExitButton) qs.push('hideExitButton=' + encodeURIComponent(req.body.hideExitButton)); if (req.body.variant) qs.push('variant=' + encodeURIComponent(req.body.variant)); if (req.body.useSendCryptoCallbackVersion) qs.push('useSendCryptoCallbackVersion=' + encodeURIComponent(req.body.useSendCryptoCallbackVersion)); const URL_SEARCH = `?${qs.join('&')}`; const urlWithSignature = `${WIDGET_API}${URL_SEARCH}`; return { urlWithSignature }; } rampGetAssets(req) { return new Promise((resolve, reject) => { const keys = this.rampGetKeys(req); const API = keys.API; const API_KEY = keys.API_KEY; const headers = { 'Content-Type': 'application/json' }; let URL; let qs = []; qs.push('hostApiKey=' + API_KEY); if (req.body.currencyCode) qs.push('currencyCode=' + encodeURIComponent(req.body.currencyCode)); if (req.body.withDisabled) qs.push('withDisabled=' + encodeURIComponent(req.body.withDisabled)); if (req.body.withHidden) qs.push('withHidden=' + encodeURIComponent(req.body.withHidden)); if (req.body.useIp) { const ip = utils_1.Utils.getIpFromReq(req); qs.push('userIp=' + encodeURIComponent(ip)); } URL = API + `/host-api/v3${req.body.flow && req.body.flow === 'sell' ? '/offramp' : ''}/assets?${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); } }); }); } rampGetSellTransactionDetails(req) { return new Promise((resolve, reject) => { const keys = this.rampGetKeys(req); const API = keys.API; if (!(0, server_1.checkRequired)(req.body, ['id', 'saleViewToken'])) { return reject(new clienterror_1.ClientError("Ramp's request missing arguments")); } const headers = { 'Content-Type': 'application/json' }; let URL; let qs = []; qs.push('secret=' + req.body.saleViewToken); URL = API + `/host-api/v3/offramp/sale/${req.body.id}?${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); } }); }); } } exports.RampService = RampService; //# sourceMappingURL=ramp.js.map