diff --git a/examples/34.estimatedNextBatchTime.js b/examples/34.estimatedNextBatchTime.js new file mode 100755 index 00000000..725d80af --- /dev/null +++ b/examples/34.estimatedNextBatchTime.js @@ -0,0 +1,51 @@ +#!/usr/bin/env -S yarn node +/* eslint-disable no-unused-vars */ + +/* +DO NOT EDIT THIS FILE BY HAND! +Examples are generated using helpers/buildExamples.js script. +Check README.md for more details. +*/ + +const sw = require('@rhino.fi/starkware-crypto') +const getWeb3 = require('./helpers/getWeb3') + +const RhinofiClientFactory = require('../src') +const envVars = require('./helpers/loadFromEnvOrConfig')( + process.env.CONFIG_FILE_NAME +) +const logExampleResult = require('./helpers/logExampleResult')(__filename) + +const ethPrivKey = envVars.ETH_PRIVATE_KEY +// NOTE: you can also generate a new key using:` +// const starkPrivKey = rhinofi.stark.createPrivateKey() +const starkPrivKey = envVars.STARK_PRIVATE_KEY +const rpcUrl = envVars.RPC_URL + +const { web3, provider } = getWeb3(ethPrivKey, rpcUrl) + +const rhinofiConfig = { + api: envVars.API_URL, + dataApi: envVars.DATA_API_URL, + useAuthHeader: true, + wallet: { + type: 'tradingKey', + meta: { + starkPrivateKey: starkPrivKey + } + } + // Add more variables to override default values +} + +;(async () => { + const rhinofi = await RhinofiClientFactory(web3, rhinofiConfig) + + const estimatedNextBatchTimeResponse = await rhinofi.estimatedNextBatchTime() + + logExampleResult(estimatedNextBatchTimeResponse) + +})() +.catch(error => { + console.error(error) + process.exit(1) +}) diff --git a/examples/helpers/examplesList.js b/examples/helpers/examplesList.js index ad5a922f..854ca78b 100644 --- a/examples/helpers/examplesList.js +++ b/examples/helpers/examplesList.js @@ -34,6 +34,7 @@ module.exports = Object.freeze([ 'transfer', 'getRegistrationStatuses', 'generateL1RegistrationPayload', + 'estimatedNextBatchTime', // TODO // 'submitBuyOrder', // 'submitSellOrder', diff --git a/package.json b/package.json index 93b03340..935f3420 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@rhino.fi/client-js", - "version": "5.2.2", + "version": "5.3.0", "main": "src/index.js", "files": [ "src", diff --git a/src/api/deposit.js b/src/api/deposit.js index 0719cd69..24e46638 100644 --- a/src/api/deposit.js +++ b/src/api/deposit.js @@ -1,4 +1,5 @@ -const { post } = require('request-promise') +const post = require('../lib/dvf/post-generic') + const DVFError = require('../lib/dvf/DVFError') const validateAssertions = require('../lib/validators/validateAssertions') @@ -36,7 +37,7 @@ module.exports = async (dvf, token, amount, starkPrivateKey, nonce, signature) = const starkSignature = dvf.stark.sign(starkKeyPair, starkMessage) - const url = dvf.config.api + '/v1/trading/w/deposit' + const url = '/v1/trading/w/deposit' const data = { token, @@ -51,7 +52,7 @@ module.exports = async (dvf, token, amount, starkPrivateKey, nonce, signature) = await dvf.contract.approve(token, dvf.token.toBaseUnitAmount(token, amount), dvf.config.DVF.starkExContractAddress, 'ETHEREUM') - const depositResponse = await post(url, { json: data }) + const depositResponse = await post(dvf, url, data) const { status, transactionHash } = await dvf.contract.deposit( tempVaultId, diff --git a/src/api/estimatedNextBatchTime.js b/src/api/estimatedNextBatchTime.js index 2e306414..8e7822ff 100644 --- a/src/api/estimatedNextBatchTime.js +++ b/src/api/estimatedNextBatchTime.js @@ -1,15 +1,8 @@ -const { get } = require('request-promise') +const get = require('../lib/dvf/get-generic') module.exports = async dvf => { // avoid browser cache with timestamp as querystring const t = Date.now() - - const url = `${dvf.config.api}/v1/trading/r/estimatedNextBatchTime?t=${t}` - try { - const data = await get(url) - return JSON.parse(data) - } - catch(e) { - return null; - } + const url = `/v1/trading/r/estimatedNextBatchTime?t=${t}` + return get(dvf, url) } diff --git a/src/api/eth/getGasStationPrice.js b/src/api/eth/getGasStationPrice.js index 3a7d3325..a86a89d2 100644 --- a/src/api/eth/getGasStationPrice.js +++ b/src/api/eth/getGasStationPrice.js @@ -1,13 +1,12 @@ -const { get } = require('request-promise') - +const { request } = require('@rhino.fi/dvf-utils') /** * Provides a safe average gas price */ module.exports = async (dvf) => { try { - const res = await get(`${dvf.config.gasApi}/json/ethgasAPI.json?api-key=${dvf.config.gasStationApiKey || ''}`) - dvf.config.defaultGasPrice = parseInt((JSON.parse(res).average * 1.25 *100000000)) + const res = await request.get(`${dvf.config.gasApi}/json/ethgasAPI.json?api-key=${dvf.config.gasStationApiKey || ''}`) + dvf.config.defaultGasPrice = parseInt((res.average * 1.25 *100000000)) } catch(e) { console.log('Error getting safe gas priec, using default ', e) } diff --git a/src/api/fastWithdrawal.js b/src/api/fastWithdrawal.js index 4a6cca57..e15c5b8a 100644 --- a/src/api/fastWithdrawal.js +++ b/src/api/fastWithdrawal.js @@ -1,7 +1,7 @@ -const { post } = require('request-promise') +const post = require('../lib/dvf/post-generic') module.exports = async (dvf, withdrawalData) => { - const url = dvf.config.api + '/v1/trading/w/fastWithdrawal' + const url = '/v1/trading/w/fastWithdrawal' const json = await dvf.createFastWithdrawalPayload(withdrawalData) - return post(url, { json }) + return post(dvf, url, json) } diff --git a/src/api/fastWithdrawalFee.js b/src/api/fastWithdrawalFee.js index e0fa377b..c3275a4b 100644 --- a/src/api/fastWithdrawalFee.js +++ b/src/api/fastWithdrawalFee.js @@ -1,7 +1,7 @@ -const { get } = require('request-promise') +const get = require('../lib/dvf/get-generic') // TODO: Deprecated (CHAIN-719) module.exports = async (dvf, token) => { - const url = dvf.config.api + '/v1/trading/r/fastWithdrawalFee' - return get(url, { json: true, qs: { token } }) + const url = '/v1/trading/r/fastWithdrawalFee' + return get(dvf, url, { token }) } diff --git a/src/api/getConfig.js b/src/api/getConfig.js index d0afe3b7..fa0d1bc3 100644 --- a/src/api/getConfig.js +++ b/src/api/getConfig.js @@ -1,9 +1,9 @@ -const { post } = require('request-promise') +const post = require('../lib/dvf/post-generic') module.exports = async dvf => { - const url = dvf.config.api + '/v1/trading/r/getConf' + const url = '/v1/trading/r/getConf' try { - const exchangeConf = await post(url, { json: {} }) + const exchangeConf = await post(dvf, url) dvf.config = Object.assign({}, dvf.config, exchangeConf) return exchangeConf } catch (error) { diff --git a/src/api/getGasPrice.js b/src/api/getGasPrice.js index 1a340579..d6929836 100644 --- a/src/api/getGasPrice.js +++ b/src/api/getGasPrice.js @@ -1,14 +1,13 @@ -const { get } = require('request-promise') +const get = require('../lib/dvf/get-generic') module.exports = async (dvf) => { const defaultGasPrice = dvf.config.defaultGasPrice const oldGasPrice = { fast: defaultGasPrice * 1.2, average: defaultGasPrice * 0.9, cheap: defaultGasPrice * 0.8 } - const endpoint = '/v1/trading/r/getGasPrice' - const url = dvf.config.api + endpoint + const url = '/v1/trading/r/getGasPrice' try { - const newGasPrice = await get(url, { json: true }) + const newGasPrice = await get(dvf, url) dvf.config.defaultGasPrice = newGasPrice.fast || dvf.config.defaultGasPrice return newGasPrice || oldGasPrice } diff --git a/src/api/getTickers.js b/src/api/getTickers.js index e6c46dba..09db7150 100644 --- a/src/api/getTickers.js +++ b/src/api/getTickers.js @@ -1,10 +1,9 @@ -const { get } = require('request-promise') +const get = require('../lib/dvf/get-generic') module.exports = async (dvf, symbols) => { if (symbols.constructor !== Array) { symbols = [symbols] } - const response = await get(`${dvf.config.api}/market-data/tickers?symbols=${symbols.join(',')}`) - return JSON.parse(response) + return get(dvf, `/market-data/tickers?symbols=${symbols.join(',')}`) } diff --git a/src/api/getTokenHolders.js b/src/api/getTokenHolders.js index 58f09d92..e7e5d9e4 100644 --- a/src/api/getTokenHolders.js +++ b/src/api/getTokenHolders.js @@ -1,11 +1,11 @@ -const { get } = require('request-promise') +const get = require('../lib/dvf/get-generic') module.exports = async (dvf, token) => { if (token) { - const response = await get( - `${dvf.config.api}/v1/trading/r/getTokenHolders?token=${token}` + return get( + dvf, + `/v1/trading/r/getTokenHolders?token=${token}` ) - return response } return null } diff --git a/src/api/getTokenLiquidityLeft.js b/src/api/getTokenLiquidityLeft.js index 8f6f0911..33edbb3d 100644 --- a/src/api/getTokenLiquidityLeft.js +++ b/src/api/getTokenLiquidityLeft.js @@ -1,11 +1,11 @@ -const { get } = require('request-promise') +const get = require('../lib/dvf/get-generic') module.exports = async (dvf, token) => { if (token) { - const response = await get( - `${dvf.config.api}/v1/trading/r/getTokenLiquidityLeft?token=${token}` + return get( + dvf, + `/v1/trading/r/getTokenLiquidityLeft?token=${token}` ) - return response } return null } diff --git a/src/api/getTokenSaleStartEnd.js b/src/api/getTokenSaleStartEnd.js index fb37e538..f7764ae3 100644 --- a/src/api/getTokenSaleStartEnd.js +++ b/src/api/getTokenSaleStartEnd.js @@ -1,11 +1,11 @@ -const { get } = require('request-promise') +const get = require('../lib/dvf/get-generic') module.exports = async (dvf, token) => { if (token) { - const response = await get( - `${dvf.config.api}/v1/trading/r/getTokenSaleStartEnd?token=${token}` + return get( + dvf, + `/v1/trading/r/getTokenSaleStartEnd?token=${token}` ) - return response } return null } diff --git a/src/api/ledger/deposit.js b/src/api/ledger/deposit.js index 43e9724c..b0c69ddb 100644 --- a/src/api/ledger/deposit.js +++ b/src/api/ledger/deposit.js @@ -1,4 +1,4 @@ -const {post} = require('request-promise') +const post = require('../../lib/dvf/post-generic') const validateAssertions = require('../../lib/validators/validateAssertions') module.exports = async (dvf, token, amount, path, nonce, signature) => { @@ -17,9 +17,9 @@ module.exports = async (dvf, token, amount, path, nonce, signature) => { starkPublicKey: starkDeposit.starkPublicKey } - const url = dvf.config.api + '/v1/trading/w/deposit' + const url = '/v1/trading/w/deposit' - const deposit = await post(url, {json: data}) + const deposit = await post(dvf, url, data) const ctDeposit = await dvf.contract.deposit(tempVaultId, token, amount, `0x${starkDeposit.starkPublicKey.x}`) return {...deposit, ...ctDeposit} diff --git a/src/api/ledger/transferUsingVaultIdAndStarkKey.js b/src/api/ledger/transferUsingVaultIdAndStarkKey.js index 7a2e45b6..328eaee1 100644 --- a/src/api/ledger/transferUsingVaultIdAndStarkKey.js +++ b/src/api/ledger/transferUsingVaultIdAndStarkKey.js @@ -1,9 +1,9 @@ -const { post } = require('request-promise') +const post = require('../../lib/dvf/post-generic') const makeCreateSignedTransferTxLedger = require('../../lib/ledger/makeCreateSignedTransferTxLedger') module.exports = async (dvf, transferData, path, feeRecipient) => { - const url = dvf.config.api + '/v1/trading/w/transfer' + const url = '/v1/trading/w/transfer' const createSignedTransferTx = makeCreateSignedTransferTxLedger(dvf)(path) const json = await dvf.createTransferPayload(transferData, feeRecipient, createSignedTransferTx) - return post(url, { json }) + return post(dvf, url, json) } diff --git a/src/api/ledger/withdraw.js b/src/api/ledger/withdraw.js index cc3a5e56..a0a7cf5e 100644 --- a/src/api/ledger/withdraw.js +++ b/src/api/ledger/withdraw.js @@ -1,4 +1,4 @@ -const { post } = require('request-promise') +const post = require('../../lib/dvf/post-generic') const validateAssertions = require('../../lib/validators/validateAssertions') module.exports = async (dvf, token, amount, starkWithdrawal) => { @@ -28,10 +28,7 @@ module.exports = async (dvf, token, amount, starkWithdrawal) => { expireTime } - //console.log({ data }) - const url = dvf.config.api + '/v1/trading/w/withdraw' + const url = '/v1/trading/w/withdraw' - return post(url, { - json: data - }) + return post(dvf, url, data) } diff --git a/src/api/submitMarketOrder.js b/src/api/submitMarketOrder.js index ab8fce8e..139b09fe 100644 --- a/src/api/submitMarketOrder.js +++ b/src/api/submitMarketOrder.js @@ -1,4 +1,4 @@ -const { post } = require('request-promise') +const post = require('../lib/dvf/post-generic') const { Joi } = require('@rhino.fi/dvf-utils') /* Keeping the schema visible and not in a seperate method @@ -30,7 +30,6 @@ const schema = Joi.object({ module.exports = async (dvf, orderData) => { const { value, error } = schema.validate(orderData) // TODO handle error - return post(dvf.config.api + '/v1/trading/w/submitOrder', { - json: await dvf.createMarketOrderPayload(value) - }) + const data = await dvf.createMarketOrderPayload(value) + return post(dvf, '/v1/trading/w/submitOrder', data) } diff --git a/src/api/submitOrder.js b/src/api/submitOrder.js index 7d8b5854..a5b3805d 100644 --- a/src/api/submitOrder.js +++ b/src/api/submitOrder.js @@ -1,4 +1,4 @@ -const { post } = require('request-promise') +const post = require('../lib/dvf/post-generic') const DVFError = require('../lib/dvf/DVFError') const { Joi } = require('@rhino.fi/dvf-utils') const P = require('@rhino.fi/aigle') @@ -67,5 +67,5 @@ module.exports = async (dvf, orderData) => { : dvf.createOrderPayload(value) ) - return post(dvf.config.api + '/v1/trading/w/submitOrder', { json }) + return post(dvf, '/v1/trading/w/submitOrder', json) } diff --git a/src/api/transferUsingVaultIdAndStarkKey.js b/src/api/transferUsingVaultIdAndStarkKey.js index bf9f3d01..4f79587b 100644 --- a/src/api/transferUsingVaultIdAndStarkKey.js +++ b/src/api/transferUsingVaultIdAndStarkKey.js @@ -1,8 +1,8 @@ -const { post } = require('request-promise') +const post = require('../lib/dvf/post-generic') module.exports = async (dvf, transferData, feeRecipient) => { - const url = dvf.config.api + '/v1/trading/w/transfer' + const url = '/v1/trading/w/transfer' const json = await dvf.createTransferPayload(transferData, feeRecipient) - return post(url, { json }) + return post(dvf, url, json) } diff --git a/src/api/withdraw.js b/src/api/withdraw.js index 9759b608..0568650a 100644 --- a/src/api/withdraw.js +++ b/src/api/withdraw.js @@ -1,4 +1,4 @@ -const { post } = require('request-promise') +const post = require('../lib/dvf/post-generic') const DVFError = require('../lib/dvf/DVFError') const validateAssertions = require('../lib/validators/validateAssertions') const { Joi } = require('@rhino.fi/dvf-utils') @@ -43,7 +43,7 @@ module.exports = async (dvf, token, amount, starkPrivateKey) => { const starkSignature = dvf.stark.sign(starkKeyPair, starkMessage) - const url = dvf.config.api + '/v1/trading/w/withdraw' + const url = '/v1/trading/w/withdraw' const data = { token, @@ -55,5 +55,5 @@ module.exports = async (dvf, token, amount, starkPrivateKey) => { expireTime } //console.log({ data }) - return post(url, { json: data }) + return post(dvf, url, data) } diff --git a/src/lib/dvf/post-generic.js b/src/lib/dvf/post-generic.js index a08fdce1..ccd8d908 100644 --- a/src/lib/dvf/post-generic.js +++ b/src/lib/dvf/post-generic.js @@ -1,4 +1,4 @@ -const { post } = require('request-promise') +const { request } = require('@rhino.fi/dvf-utils') const _omitBy = require('lodash/omitBy') const _isNil = require('lodash/isNil') @@ -6,11 +6,10 @@ module.exports = async (dvf, endpoint, json = {}, headers = {}) => { const url = dvf.config.api + endpoint const options = { - uri: url, headers, // removes null and undefined values - json: _omitBy(json, _isNil) + data: _omitBy(json, _isNil) } - return post(options) -} + return request.post(url, options) +} \ No newline at end of file