UNPKG

bitcore-wallet-service

Version:
208 lines 8.45 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.ThorswapService = 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"); class ThorswapService { constructor() { this.request = request; } thorswapGetKeys(req) { if (!config_1.default.thorswap) throw new Error('Thorswap 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.thorswap[env].api, API_KEY: config_1.default.thorswap[env].apiKey, SECRET_KEY: config_1.default.thorswap[env].secretKey, REFERER: config_1.default.thorswap[env].referer }; return keys; } thorswapGetSupportedChains(req) { return new Promise((resolve, reject) => { const keys = this.thorswapGetKeys(req); const API = keys.API; const REFERER = keys.REFERER; const API_KEY = keys.API_KEY; const headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Referer': REFERER, 'x-api-key': API_KEY }; const uriPath = req?.body?.includeDetails ? '/tokenlist/utils/chains/details' : '/tokenlist/utils/chains'; const URL = API + uriPath; 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); } }); }); } thorswapGetCryptoCurrencies(req) { return new Promise((resolve, reject) => { const keys = this.thorswapGetKeys(req); const API = keys.API; const REFERER = keys.REFERER; const API_KEY = keys.API_KEY; const headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Referer': REFERER, 'x-api-key': API_KEY }; let qs = []; qs.push('categories=' + (req?.body?.categories ?? 'all')); const uriPath = req?.body?.includeDetails ? '/tokenlist/utils/currencies/details' : '/tokenlist/utils/currencies'; const URL = API + `${uriPath}?${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); } }); }); } thorswapGetSwapQuote(req) { return new Promise((resolve, reject) => { const keys = this.thorswapGetKeys(req); const API = keys.API; const REFERER = keys.REFERER; const API_KEY = keys.API_KEY; const headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Referer': REFERER, 'x-api-key': API_KEY }; let qs = []; if (!(0, server_1.checkRequired)(req.body, ['sellAsset', 'buyAsset', 'sellAmount'])) { return reject(new clienterror_1.ClientError("Thorswap's request missing arguments")); } qs.push('sellAsset=' + req.body.sellAsset); qs.push('buyAsset=' + req.body.buyAsset); qs.push('sellAmount=' + req.body.sellAmount); if (req.body.senderAddress) qs.push('senderAddress=' + req.body.senderAddress); if (req.body.recipientAddress) qs.push('recipientAddress=' + req.body.recipientAddress); if (req.body.slippage) qs.push('slippage=' + req.body.slippage); if (req.body.limit) qs.push('limit=' + req.body.limit); if (req.body.providers) qs.push('providers=' + req.body.providers); if (req.body.subProviders) qs.push('subProviders=' + req.body.subProviders); if (req.body.preferredProvider) qs.push('preferredProvider=' + req.body.preferredProvider); if (req.body.affiliateAddress) qs.push('affiliateAddress=' + req.body.affiliateAddress); if (req.body.affiliateBasisPoints) qs.push('affiliateBasisPoints=' + req.body.affiliateBasisPoints); if (req.body.isAffiliateFeeFlat) qs.push('isAffiliateFeeFlat=' + req.body.isAffiliateFeeFlat); if (req.body.allowSmartContractRecipient) qs.push('allowSmartContractRecipient=' + req.body.allowSmartContractRecipient); const URL = API + `/aggregator/tokens/quote?${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); } }); }); } thorswapGetSwapTx(req) { return new Promise((resolve, reject) => { const keys = this.thorswapGetKeys(req); const API = keys.API; const REFERER = keys.REFERER; const API_KEY = keys.API_KEY; const headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Referer': REFERER, 'x-api-key': API_KEY }; if (!(0, server_1.checkRequired)(req.body, ['hash']) && !(0, server_1.checkRequired)(req.body, ['txn'])) { return reject(new clienterror_1.ClientError("Thorswap's request missing arguments")); } this.request.post(API + '/tracker/v2/txn', { 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); } }); }); } } exports.ThorswapService = ThorswapService; //# sourceMappingURL=thorswap.js.map