From fef11b4712a2973965eb984837890fe9d781f574 Mon Sep 17 00:00:00 2001 From: sairajzero Date: Sun, 9 Oct 2022 23:08:48 +0530 Subject: [PATCH] moving conversion.js into service folder --- src/background.js | 6 ++-- src/request.js | 2 +- src/{ => services}/conversion.js | 51 ++++++++++++++++++++------------ 3 files changed, 36 insertions(+), 23 deletions(-) rename src/{ => services}/conversion.js (60%) diff --git a/src/background.js b/src/background.js index 101bfda..8a11f92 100644 --- a/src/background.js +++ b/src/background.js @@ -1,6 +1,6 @@ 'use strict'; const blockchain = require('./blockchain'); -const conversion = require('./conversion'); +const conversion_rates = require('./services/conversion').getRate; const { LAUNCH_SELLER_TAG, @@ -219,7 +219,7 @@ function verifyConvert() { results.forEach(req => { if (mode == _sql.CONVERT_MODE_GET) { verifyTx.token(req.floID, req.in_txid, true).then(({ amount }) => { - conversion.getRate().then(rate => { + conversion_rates.BTC_INR().then(rate => { blockchain.convertToCoin.init(req.floID, "BTC", amount, amount / rate, req.id) }).catch(error => console.error(error)) }).catch(error => { @@ -230,7 +230,7 @@ function verifyConvert() { }); } else if (mode == _sql.CONVERT_MODE_PUT) { verifyTx.BTC(req.floID, req.in_txid).then(quantity => { - conversion.getRate().then(rate => { + conversion_rates.BTC_INR().then(rate => { blockchain.convertFromCoin.init(req.floID, quantity * rate, quantity, req.id) }).catch(error => console.error(error)) }).catch(error => { diff --git a/src/request.js b/src/request.js index 96197ba..67a4710 100644 --- a/src/request.js +++ b/src/request.js @@ -1,7 +1,7 @@ 'use strict'; const market = require("./market"); -const conversion = require('./conversion'); +const conversion = require('./services/conversion'); const { SIGN_EXPIRE_TIME, diff --git a/src/conversion.js b/src/services/conversion.js similarity index 60% rename from src/conversion.js rename to src/services/conversion.js index f8829d7..11ea830 100644 --- a/src/conversion.js +++ b/src/services/conversion.js @@ -1,17 +1,21 @@ -const _sql = require('./_constants').sql; +const _sql = require('../_constants').sql; +const eCode = require('../../docs/scripts/floExchangeAPI').errorCode; + const allowedConversion = ["BTC"]; -function getRate() { +var DB; //container for database + +function BTC_INR() { return new Promise((resolve, reject) => { - getRate.BTC_USD().then(BTC_rate => { - getRate.USD_INR().then(INR_rate => { - resolve(BTC_rate * INR_rate); + BTC_USD().then(btc_usd => { + USD_INR().then(usd_inr => { + resolve(btc_usd * usd_inr); }).catch(error => reject(error)) }).catch(error => reject(error)) }) } -getRate.BTC_USD = function () { +function BTC_USD() { return new Promise((resolve, reject) => { fetch('https://api.coinlore.net/api/ticker/?id=90').then(response => { if (response.ok) { @@ -24,7 +28,7 @@ getRate.BTC_USD = function () { }); } -getRate.USD_INR = function () { +function USD_INR() { return new Promise((resolve, reject) => { fetch('https://api.exchangerate-api.com/v4/latest/usd').then(response => { if (response.ok) { @@ -53,20 +57,29 @@ function convertToCoin(floID, txid, coin) { } function convertFromCoin(floID, txid, coin) { - if (!allowedConversion.includes(coin)) - return reject(INVALID(eCode.INVALID_TOKEN_NAME, `Invalid coin (${coin})`)); - DB.query("SELECT status FROM DirectConvert WHERE in_txid=? AND floID=? mode=?", [txid, floID, _sql.CONVERT_MODE_PUT]).then(result => { - if (result.length) - return reject(INVALID(eCode.DUPLICATE_ENTRY, "Transaction already in process")); - else - DB.query("INSERT INTO DirectConvert(floID, in_txid, mode, coin, status) VALUES (?, ?, ?, ?, ?)", [floID, txid, _sql.CONVERT_MODE_PUT, coin, "PENDING"]) - .then(result => resolve("Conversion request in process")) - .catch(error => reject(error)); - }).catch(error => reject(error)) + return new Promise((resolve, reject) => { + if (!allowedConversion.includes(coin)) + return reject(INVALID(eCode.INVALID_TOKEN_NAME, `Invalid coin (${coin})`)); + DB.query("SELECT status FROM DirectConvert WHERE in_txid=? AND floID=? mode=?", [txid, floID, _sql.CONVERT_MODE_PUT]).then(result => { + if (result.length) + return reject(INVALID(eCode.DUPLICATE_ENTRY, "Transaction already in process")); + else + DB.query("INSERT INTO DirectConvert(floID, in_txid, mode, coin, status) VALUES (?, ?, ?, ?, ?)", [floID, txid, _sql.CONVERT_MODE_PUT, coin, "PENDING"]) + .then(result => resolve("Conversion request in process")) + .catch(error => reject(error)); + }).catch(error => reject(error)) + }) } module.exports = { - getRate, + getRate: { + BTC_USD, + USD_INR, + BTC_INR + }, convertToCoin, - convertFromCoin + convertFromCoin, + set DB(db) { + DB = db; + } } \ No newline at end of file