Add support for recv_window parameter and custom options for REST client (#7)
* remove unused/unexisting method. Add missing semi-colon. Add support for recvWindow parameter, optional, with default value. Add support for custom sync time interval. * add new params to rest client constructor * add recv and sync as options object, optional, with updated docs * cleaning * whitespace * allow override via params * param consistency Co-authored-by: tiagosiebler <ts@github.com>
This commit is contained in:
@@ -3,24 +3,30 @@ const assert = require('assert');
|
||||
|
||||
const request = require('request');
|
||||
|
||||
const {signMessage, getServerTimeOffset} = require('./utility.js');
|
||||
const {signMessage} = require('./utility.js');
|
||||
|
||||
const baseUrls = {
|
||||
livenet: 'https://api.bybit.com',
|
||||
testnet: 'https://api-testnet.bybit.com'
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = class Request {
|
||||
|
||||
constructor(key, secret, livenet=false) {
|
||||
constructor(key, secret, livenet=false, options={}) {
|
||||
this.baseUrl = baseUrls[livenet === true ? 'livenet' : 'testnet'];
|
||||
this._timeOffset = null;
|
||||
this._syncTimePromise = null;
|
||||
|
||||
this.options = {
|
||||
recv_window: 5000,
|
||||
sync_interval_ms: 3600000,
|
||||
...options
|
||||
}
|
||||
|
||||
if(key) assert(secret, 'Secret is required for private enpoints');
|
||||
|
||||
this._syncTime();
|
||||
setInterval(this._syncTime.bind(this), 3600000);
|
||||
setInterval(this._syncTime.bind(this), parseInt(this.options.sync_interval_ms));
|
||||
|
||||
this.key = key;
|
||||
this.secret = secret;
|
||||
@@ -91,6 +97,11 @@ module.exports = class Request {
|
||||
timestamp: Date.now() + this._timeOffset
|
||||
};
|
||||
|
||||
// Optional, set to 5000 by default. Increase if timestamp/recv_window errors are seen.
|
||||
if(this.options.recv_window && !params.recv_window) {
|
||||
params.recv_window = this.options.recv_window;
|
||||
}
|
||||
|
||||
if(this.key && this.secret) {
|
||||
params.sign = signMessage(this._serializeParams(params), this.secret);
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ const Request = require('./request.js');
|
||||
|
||||
module.exports = class RestClient {
|
||||
|
||||
constructor(key, secret, livenet=false) {
|
||||
constructor(key, secret, livenet=false, options={}) {
|
||||
this.request = new Request(...arguments);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user