@exchanges/binance
Version:
Exchange provider for Binance API
122 lines • 5.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.apiCall = void 0;
const __1 = require("..");
const clients_1 = require("../clients");
const apiKeyCall_1 = require("./apiKeyCall");
const apiSecretCall_1 = require("./apiSecretCall");
const publicCall_1 = require("./publicCall");
const socketCall_1 = require("./socketCall");
const userDataCall_1 = require("./userDataCall");
function apiCall(options, callback) {
if (!options)
throw new TypeError('apiCall options is empty');
if (typeof options !== 'object')
throw new TypeError('apiCall options is not object');
if (!options.host)
throw new TypeError('apiCall options.host is empty');
if (!options.path)
throw new TypeError('apiCall options.path is empty');
if (!options.securityType)
throw new TypeError('apiCall options.securityType is empty');
if (!options.client)
throw new TypeError('apiCall options.client is empty');
if (options.securityType !== 'NONE' &&
options.securityType !== 'USER_STREAM' &&
options.securityType !== 'MARKET_DATA' &&
options.securityType !== 'TRADE' &&
options.securityType !== 'MARGIN' &&
options.securityType !== 'USER_DATA' &&
options.securityType !== 'SOCKET' &&
options.securityType !== 'USER_DATA_STREAM')
throw new TypeError('apiCall options.type is not correct');
if ((options.securityType === 'NONE' || options.securityType === 'SOCKET') &&
!(options.client instanceof clients_1.BinanceClient))
throw new TypeError('apiCall options.client is not BinanceClient');
if ((options.securityType === 'USER_STREAM' ||
options.securityType === 'USER_DATA_STREAM' ||
options.securityType === 'MARKET_DATA') &&
!(options.client instanceof clients_1.BinanceKeyClient))
throw new TypeError('apiCall options.client is not BinanceKeyClient');
if ((options.securityType === 'TRADE' || options.securityType === 'MARGIN' || options.securityType === 'USER_DATA') &&
!(options.client instanceof clients_1.BinanceSignedClient))
throw new TypeError('apiCall options.client is not BinanceSignedClient');
// Callback вызов
if (options.securityType === 'SOCKET' || options.securityType === 'USER_DATA_STREAM') {
if (!callback)
throw new TypeError('apiCall socket callback is empty');
if (typeof callback !== 'function')
throw new TypeError('apiCall socket callback is not correct');
if (options.securityType === 'SOCKET') {
return (0, socketCall_1.socketCall)({ host: getHost(options.client, options.host, true), path: options.path }, callback);
}
if (options.securityType === 'USER_DATA_STREAM') {
return (0, userDataCall_1.userDataCall)({ client: options.client, host: options.host, path: options.path, data: options.data }, callback);
}
}
// Обычный вызов
if (!options.method)
throw new TypeError('apiCall options.method is empty');
if (options.method !== 'GET' && options.method !== 'POST' && options.method !== 'PUT' && options.method !== 'DELETE')
throw new TypeError('apiCall options.method is not correct');
const host = getHost(options.client, options.host, false);
if (options.securityType === 'NONE') {
return (0, publicCall_1.publicCall)({
axios: options.client.axios,
host,
path: options.path,
method: options.method,
data: options.data,
});
}
if (options.securityType === 'USER_STREAM' || options.securityType === 'MARKET_DATA') {
return (0, apiKeyCall_1.apiKeyCall)({
axios: options.client.axios,
host,
path: options.path,
method: options.method,
data: options.data,
apiKey: options.client.apiKey,
});
}
if (options.securityType === 'TRADE' || options.securityType === 'MARGIN' || options.securityType === 'USER_DATA') {
return (0, apiSecretCall_1.apiSecretCall)({
axios: options.client.axios,
host,
path: options.path,
method: options.method,
data: options.data,
apiKey: options.client.apiKey,
apiSecret: options.client.apiSecret,
getTime: options.client.getTime,
noTimestamp: options.noTimestamp,
noSignature: options.noSignature,
});
}
throw __1.BinanceError.UnknownError();
}
exports.apiCall = apiCall;
function getHost(client, host, isSocket) {
if (host === 'spot') {
if (isSocket)
return client.spotSocketEndpoint;
return client.spotApiEndpoint;
}
if (host === 'usdtM') {
if (isSocket)
return client.usdFuturesSocketEndpoint;
return client.usdFuturesApiEndpoint;
}
if (host === 'coinM') {
if (isSocket)
return client.coinFuturesSocketEndpoint;
return client.coinFuturesApiEndpoint;
}
if (host === 'vanilla') {
if (isSocket)
return client.vanillaSocketEndpoint;
return client.vanillaApiEndpoint;
}
throw new TypeError('apiCall options.host is not correct');
}
//# sourceMappingURL=apiCall.js.map