UNPKG

metaapi.cloud-sdk

Version:

SDK for MetaApi, a professional cloud forex API which includes MetaTrader REST API and MetaTrader websocket API. Supports both MetaTrader 5 (MT5) and MetaTrader 4 (MT4). CopyFactory copy trading API included. (https://metaapi.cloud)

73 lines (63 loc) 1.89 kB
'use strict'; import DomainClient from './domain.client'; import HttpClient from './httpClient'; import MethodAccessError from './methodAccessError'; /** * metaapi.cloud MetaTrader API client */ export default class MetaApiClient { protected _httpClient: any; protected _domainClient: any; protected _host: string; protected _token: any; /** * Constructs MetaTrader API client instance * @param {HttpClient} httpClient HTTP client * @param {DomainClient} domainClient domain client */ constructor(httpClient: HttpClient, domainClient: DomainClient) { this._httpClient = httpClient; this._domainClient = domainClient; this._host = `https://mt-provisioning-api-v1.${domainClient.domain}`; this._token = domainClient.token; } /** * Returns type of current token * @returns {string} Type of current token * @protected */ get _tokenType() { if (typeof this._token === 'string' && this._token.split('.').length === 3) { return 'api'; } if (typeof this._token === 'string' && this._token.split('.').length === 1) { return 'account'; } return ''; } /** * Checks that current token is not api token * @returns {boolean} Indicator of absence api token * @protected */ _isNotJwtToken() { return typeof this._token !== 'string' || this._token.split('.').length !== 3; } /** * Checks that current token is not account token * @returns {boolean} Indicator of absence account token * @protected */ _isNotAccountToken() { return typeof this._token !== 'string' || this._token.split('.').length !== 1; } /** * Handles no accessing to the method * @param {string} methodName Name of method * @protected * @throws */ _handleNoAccessError(methodName) { return Promise.reject(new MethodAccessError(methodName, this._tokenType)); } }