From 60a2a7aa632ea03a3cb8554ab4e47a118b5ca015 Mon Sep 17 00:00:00 2001 From: MadCatMining Date: Mon, 12 Apr 2021 17:38:46 +0200 Subject: [PATCH 1/6] Add Freiexchange Add /lib/markets/freiexchange.js --- lib/markets/freiexchange.js | 122 ++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 lib/markets/freiexchange.js diff --git a/lib/markets/freiexchange.js b/lib/markets/freiexchange.js new file mode 100644 index 000000000..a6b7303d2 --- /dev/null +++ b/lib/markets/freiexchange.js @@ -0,0 +1,122 @@ +var request = require('request'); +var crypto = require('crypto'); +var base_url = 'https://api.freiexchange.com'; + +function get_summary(coin, exchange, cb) { + var req_url = base_url + '/public/' + coin; + var summary = {}; + request({uri: req_url, json: true}, function (error, response, body) { + if (error) { + return cb(error, null); + } else if (body.error !== true) { + + var pair = body[coin + '_' + exchange]; + + summary['ask'] = parseFloat(pair[0].high).toFixed(8); + summary['bid'] = parseFloat(pair[0].low).toFixed(8); + summary['volume'] = parseFloat(pair[0].volume24h).toFixed(8); + summary['volume_btc'] = parseFloat(pair[0].volume24h_btc).toFixed(8); + summary['low'] = parseFloat(pair[0].highestBuy).toFixed(8); + summary['high'] = parseFloat(pair[0].lowestSell).toFixed(8); + summary['last'] = parseFloat(pair[0].last).toFixed(8); + summary['change'] = parseFloat(pair[0].percent_change_24h); + return cb(null, summary); + } else { + return cb(error, null); + } + }); +} + +function get_trades(coin, exchange, cb) { + var req_url = base_url + '/trades/' + coin; + request({ uri: req_url, json: true }, function (error, response, body) { + if(error) + return cb(error, null); + else if (body.error !== true) { + var tTrades = body; + var trades = []; + for (var i = 0; i < tTrades.length; i++) { + var Trade = { + ordertype: tTrades[i].type, + amount: parseFloat(tTrades[i].total_coin).toFixed(8), + price: parseFloat(tTrades[i].price).toFixed(8), + total: (parseFloat(tTrades[i].total_coin).toFixed(8) * parseFloat(tTrades[i].price)).toFixed(8), + timestamp: formatTime(tTrades[i].time) + } + trades.push(Trade); + } + return cb(null, trades); + } else { + return cb(body.Message, null); + } + }); +} + +function formatTime(timestamp){ + var raw = new Date(timestamp) + var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; + var year = raw.getFullYear(); + var month = months[raw.getMonth()]; + var date = raw.getDate(); + var hour = raw.getHours(); + var min = raw.getMinutes(); + var sec = raw.getSeconds(); + var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ; + return time; +} + +function get_orders(coin, exchange, cb) { + var req_url = base_url + '/orderbook/' + coin; + request({ uri: req_url, json: true }, function (error, response, body) { + if(error) + return cb(error, null); + else if (body.error !== true) { + var buyorders = body['BUY']; + var sellorders = body['SELL']; + + var buys = []; + var sells = []; + if (buyorders.length > 0){ + for (var i = 0; i < buyorders.length; i++) { + var order = { + amount: parseFloat(buyorders[i].amount).toFixed(8), + price: parseFloat(buyorders[i].price).toFixed(8), + total: (parseFloat(buyorders[i].amount).toFixed(8) * parseFloat(buyorders[i].price)).toFixed(8) + } + buys.push(order); + } + } else {} + if (sellorders.length > 0) { + for (var x = 0; x < sellorders.length; x++) { + var order = { + amount: parseFloat(sellorders[x].amount).toFixed(8), + price: parseFloat(sellorders[x].price).toFixed(8), + total: (parseFloat(sellorders[x].amount).toFixed(8) * parseFloat(sellorders[x].price)).toFixed(8) + } + sells.push(order); + } + } else { + } + return cb(null, buys, sells); + } else { + return cb(body.Message, [], []) + } + }); +} + + +module.exports = { + get_data: function(settings, cb) { + var error = null; + get_orders(settings.coin, settings.exchange, function(err, buys, sells) { + if (err) { error = err; } + get_trades(settings.coin, settings.exchange, function(err, trades) { + if (err) { error = err; } + get_summary(settings.coin, settings.exchange, function(err, stats) { + if (err) { error = err; } + return cb(error, {buys: buys, sells: sells, chartdata: [], trades: trades, stats: stats}); + }); + }); + }); + } +}; \ No newline at end of file From c5161224d9eab03571cda08b565a29ba65fd7dcc Mon Sep 17 00:00:00 2001 From: MadCatMining Date: Mon, 12 Apr 2021 17:41:52 +0200 Subject: [PATCH 2/6] Add Freiexchange Add Freiexchange to /lib/locale.js --- lib/locale.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/locale.js b/lib/locale.js index 41701c553..2451a91e2 100644 --- a/lib/locale.js +++ b/lib/locale.js @@ -136,6 +136,7 @@ exports.heavy_changein = "Reward change in approximately", exports.heavy_key = "Key", exports.heavy_lastxvotes = "Last 20 votes", +exports.freiexchange = "Freiexchange", exports.poloniex = "Poloniex", exports.bittrex = "Bittrex", exports.altmarkets = "AltMarkets", From 03c07aa6457e4f163bf4a0345ac84c5f085166dc Mon Sep 17 00:00:00 2001 From: MadCatMining Date: Mon, 12 Apr 2021 17:43:39 +0200 Subject: [PATCH 3/6] Add Freiexchange Add Freiexchange to /locale/en.json --- locale/en.json | 1 + 1 file changed, 1 insertion(+) diff --git a/locale/en.json b/locale/en.json index 8387b7ea7..e9b26ed6d 100644 --- a/locale/en.json +++ b/locale/en.json @@ -127,6 +127,7 @@ "mkt_time_stamp": "Time Stamp", // Markets + "freiexchange": "Freiexchange", "poloniex": "Poloniex", "bittrex": "Bittrex", "altmarkets": "AltMarkets", From aaed71e01acd08db9da9280efe3a49245063b4f9 Mon Sep 17 00:00:00 2001 From: MadCatMining Date: Mon, 12 Apr 2021 17:45:02 +0200 Subject: [PATCH 4/6] Add Freiexchange Add freiexchange.pug to /views/markets --- views/markets/freiexchange.pug | 107 +++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 views/markets/freiexchange.pug diff --git a/views/markets/freiexchange.pug b/views/markets/freiexchange.pug new file mode 100644 index 000000000..61a5e89b8 --- /dev/null +++ b/views/markets/freiexchange.pug @@ -0,0 +1,107 @@ +extends menu + +block market_view + .row + .col-md-12 + .card.card-default + .card-header + strong #{settings.locale.freiexchange} - #{marketdata.coin}/#{marketdata.exchange} - #{settings.locale.mkt_hours} + a(href='#') + span.fa.fa-line-chart.pull-right.view-chart-disabled.iquidus.market-toggle(data-toggle='tooltip', data-placement='bottom', title=settings.locale.mkt_no_chart) + table.table.table-bordered.summary-table + thead + tr + th #{settings.locale.mkt_high} + th #{settings.locale.mkt_low} + th #{settings.locale.mkt_volume} + th.d-none.d-sm-block #{settings.locale.mkt_top_bid} + th.d-none.d-sm-block #{settings.locale.mkt_top_ask} + th.d-none.d-sm-block #{settings.locale.mkt_last} + tbody + tr + td #{marketdata.data.summary.high} + td #{marketdata.data.summary.low} + td #{marketdata.data.summary.volume} + td.d-none.d-sm-block #{marketdata.data.summary.bid} + td.d-none.d-sm-block #{marketdata.data.summary.ask} + td.d-none.d-sm-block #{marketdata.data.summary.last} + .row + .col-md-6.col-xs-12 + .card.card-default + .card-header + h3.card-title #{settings.locale.mkt_buy_orders} + table.table.table-striped.table-bordered.order-table + thead + tr + th #{settings.locale.mkt_price} (#{marketdata.exchange}) + th #{settings.locale.mkt_amount} (#{marketdata.coin}) + th.d-none.d-sm-block #{settings.locale.mkt_total} (#{marketdata.exchange}) + tbody + each buy in marketdata.data.buys + tr + td + =parseFloat(buy.price).toFixed(8) + td + =parseFloat(buy.amount).toFixed(8) + td.d-none.d-sm-block + =parseFloat(buy.total).toFixed(8) + .col-md-6.col-xs-12 + .card.card-default + .card-header + h3.card-title #{settings.locale.mkt_sell_orders} + table.table.table-striped.table-bordered.order-table + thead + tr + th #{settings.locale.mkt_price} (#{marketdata.exchange}) + th #{settings.locale.mkt_amount} (#{marketdata.coin}) + th.d-none.d-sm-block #{settings.locale.mkt_total} (#{marketdata.exchange}) + tbody + each sell in marketdata.data.sells + tr + td + =parseFloat(sell.price).toFixed(8) + td + =parseFloat(sell.amount).toFixed(8) + td.d-none.d-sm-block + =parseFloat(sell.total).toFixed(8) + .row + .col-md-12 + .card.card-default + .card-header + h3.card-title #{settings.locale.mkt_trade_history} + table.table.table-hover.history-table.table-bordered(cellspacing="0") + thead + tr + th.d-none.d-sm-block #{settings.locale.mkt_type} + th #{settings.locale.mkt_amount} (#{marketdata.coin}) + th #{settings.locale.mkt_price} (#{marketdata.exchange}) + th #{settings.locale.mkt_total} (#{marketdata.exchange}) + th #{settings.locale.mkt_time_stamp} + tbody + each order in marketdata.data.history + if order.ordertype == 'buy' + tr.success + td.d-none.d-sm-block + =order.ordertype + td + =order.amount + td + =order.price + td + =order.total + td.d-none.d-sm-block + =(new Date(order.timestamp * 1000).toUTCString()) + else + tr.danger + td.d-none.d-sm-block + =order.ordertype + td + =order.amount + td + =order.price + td + =order.total + td + =order.timestamp + + .footer-padding From 7981ea0b121b97f1981e03d1a95d0800365931e0 Mon Sep 17 00:00:00 2001 From: MadCatMining Date: Mon, 12 Apr 2021 17:59:50 +0200 Subject: [PATCH 5/6] Resolved conflict --- locale/en.json | 1 + 1 file changed, 1 insertion(+) diff --git a/locale/en.json b/locale/en.json index e9b26ed6d..d3def82c9 100644 --- a/locale/en.json +++ b/locale/en.json @@ -127,6 +127,7 @@ "mkt_time_stamp": "Time Stamp", // Markets + "fides": "Fides-ex", "freiexchange": "Freiexchange", "poloniex": "Poloniex", "bittrex": "Bittrex", From 315469ded213315b80887735df2a3b78b9579457 Mon Sep 17 00:00:00 2001 From: MadCatMining Date: Mon, 12 Apr 2021 18:02:04 +0200 Subject: [PATCH 6/6] Resolving conflict --- lib/locale.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/locale.js b/lib/locale.js index 2451a91e2..4cc23232d 100644 --- a/lib/locale.js +++ b/lib/locale.js @@ -137,6 +137,7 @@ exports.heavy_key = "Key", exports.heavy_lastxvotes = "Last 20 votes", exports.freiexchange = "Freiexchange", +exports.fides = "Fides-ex", exports.poloniex = "Poloniex", exports.bittrex = "Bittrex", exports.altmarkets = "AltMarkets",