UNPKG

bitcore-wallet-service

Version:
146 lines 6.09 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.WyreService = void 0; const request = __importStar(require("request")); const config_1 = __importDefault(require("../config")); const clienterror_1 = require("../lib/errors/clienterror"); const server_1 = require("../lib/server"); const Bitcore = require('bitcore-lib'); class WyreService { constructor() { this.request = request; } wyreGetKeys(req) { if (!config_1.default.wyre) throw new Error('Wyre missing credentials'); let env = 'sandbox'; if (req.body.env && req.body.env == 'production') { env = 'production'; } delete req.body.env; const keys = { API: config_1.default.wyre[env].api, API_KEY: config_1.default.wyre[env].apiKey, SECRET_API_KEY: config_1.default.wyre[env].secretApiKey, ACCOUNT_ID: config_1.default.wyre[env].appProviderAccountId }; return keys; } wyreWalletOrderQuotation(req) { return new Promise((resolve, reject) => { const keys = this.wyreGetKeys(req); req.body.accountId = keys.ACCOUNT_ID; if (req.body.amountIncludeFees) { if (!(0, server_1.checkRequired)(req.body, ['sourceAmount', 'sourceCurrency', 'destCurrency', 'dest', 'country', 'walletType'])) { return reject(new clienterror_1.ClientError("Wyre's request missing arguments")); } } else { if (!(0, server_1.checkRequired)(req.body, ['amount', 'sourceCurrency', 'destCurrency', 'dest', 'country'])) { return reject(new clienterror_1.ClientError("Wyre's request missing arguments")); } } const URL = `${keys.API}/v3/orders/quote/partner?timestamp=${Date.now().toString()}`; const XApiSignature = URL + JSON.stringify(req.body); const XApiSignatureHash = Bitcore.crypto.Hash.sha256hmac(Buffer.from(XApiSignature), Buffer.from(keys.SECRET_API_KEY)).toString('hex'); const headers = { 'Content-Type': 'application/json', 'X-Api-Key': keys.API_KEY, 'X-Api-Signature': XApiSignatureHash }; 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); } }); }); } wyreWalletOrderReservation(req) { return new Promise((resolve, reject) => { const keys = this.wyreGetKeys(req); req.body.referrerAccountId = keys.ACCOUNT_ID; if (req.body.amountIncludeFees) { if (!(0, server_1.checkRequired)(req.body, [ 'sourceAmount', 'sourceCurrency', 'destCurrency', 'dest', 'country', 'paymentMethod' ])) { return reject(new clienterror_1.ClientError("Wyre's request missing arguments")); } } else { if (!(0, server_1.checkRequired)(req.body, ['amount', 'sourceCurrency', 'destCurrency', 'dest', 'paymentMethod'])) { return reject(new clienterror_1.ClientError("Wyre's request missing arguments")); } } const URL = `${keys.API}/v3/orders/reserve?timestamp=${Date.now().toString()}`; const XApiSignature = URL + JSON.stringify(req.body); const XApiSignatureHash = Bitcore.crypto.Hash.sha256hmac(Buffer.from(XApiSignature), Buffer.from(keys.SECRET_API_KEY)).toString('hex'); const headers = { 'Content-Type': 'application/json', 'X-Api-Key': keys.API_KEY, 'X-Api-Signature': XApiSignatureHash }; 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); } }); }); } } exports.WyreService = WyreService; //# sourceMappingURL=wyre.js.map