diff --git a/CloudVM/Exchange/ExchangeAPI.js b/CloudVM/Exchange/ExchangeAPI.js
new file mode 100644
index 000000000..fcf576abf
--- /dev/null
+++ b/CloudVM/Exchange/ExchangeAPI.js
@@ -0,0 +1,137 @@
+function newExchangeAPI() {
+
+ const INFO_LOG = true;
+ const LOG_FILE_CONTENT = true;
+
+ const MODULE_NAME = "CloudVM -> Poloniex Client API";
+
+ let thisObject = {
+ API: {
+ analizeResponse: analizeResponse,
+ returnOpenOrders: returnOpenOrders,
+ returnOrderTrades: returnOrderTrades,
+ buy: buy,
+ sell: sell,
+ moveOrder: moveOrder,
+ returnTicker: returnTicker
+ }
+ };
+
+ return thisObject;
+
+ function returnOpenOrders(pMarketAssetA, pMarketAssetB, callBackFunction) {
+
+ let path = "ExchangeAPI" + "/"
+ + "returnOpenOrders" + "/"
+ + window.SESSION_TOKEN + "/"
+ + pMarketAssetA + "/"
+ + pMarketAssetB
+ ;
+
+ callServer(undefined, path + "/NO-LOG", onServerResponse);
+
+ function onServerResponse(pServerResponse) {
+
+ let response = JSON.parse(pServerResponse);
+ callBackFunction(response.err, response.exchangeResponse);
+
+ }
+ }
+
+ function returnOrderTrades(pPositionId, callBackFunction) {
+
+ let path = "ExchangeAPI" + "/"
+ + "returnOrderTrades" + "/"
+ + window.SESSION_TOKEN + "/"
+ + pPositionId
+ ;
+
+ callServer(undefined, path + "/NO-LOG", onServerResponse);
+
+ function onServerResponse(pServerResponse) {
+
+ let response = JSON.parse(pServerResponse);
+ callBackFunction(response.err, response.exchangeResponse);
+
+ }
+ }
+
+ function buy(pMarketAssetA, pMarketAssetB, pRate, pAmountB, callBackFunction) {
+
+ let path = "ExchangeAPI" + "/"
+ + "buy" + "/"
+ + window.SESSION_TOKEN + "/"
+ + pMarketAssetA + "/"
+ + pMarketAssetB + "/"
+ + pRate + "/"
+ + pAmountB
+ ;
+
+ callServer(undefined, path + "/NO-LOG", onServerResponse);
+
+ function onServerResponse(pServerResponse) {
+
+ let response = JSON.parse(pServerResponse);
+ callBackFunction(response.err, response.exchangeResponse);
+
+ }
+ }
+
+ function sell(pMarketAssetA, pMarketAssetB, pRate, pAmountB, callBackFunction) {
+
+ let path = "ExchangeAPI" + "/"
+ + "sell" + "/"
+ + window.SESSION_TOKEN + "/"
+ + pMarketAssetA + "/"
+ + pMarketAssetB + "/"
+ + pRate + "/"
+ + pAmountB
+ ;
+
+ callServer(undefined, path + "/NO-LOG", onServerResponse);
+
+ function onServerResponse(pServerResponse) {
+
+ let response = JSON.parse(pServerResponse);
+ callBackFunction(response.err, response.exchangeResponse);
+
+ }
+ }
+
+ function moveOrder(pPositionId, pNewRate, pPositionAmountB, callBackFunction) {
+
+ let path = "ExchangeAPI" + "/"
+ + "moveOrder" + "/"
+ + window.SESSION_TOKEN + "/"
+ + pPositionId + "/"
+ + pNewRate + "/"
+ + pPositionAmountB
+ ;
+
+ callServer(undefined, path + "/NO-LOG", onServerResponse);
+
+ function onServerResponse(pServerResponse) {
+
+ let response = JSON.parse(pServerResponse);
+ callBackFunction(response.err, response.exchangeResponse);
+
+ }
+ }
+
+ function returnTicker(callBackFunction) {
+
+ let path = "ExchangeAPI" + "/"
+ + "returnTicker" + "/"
+ + window.SESSION_TOKEN
+ ;
+
+ callServer(undefined, path + "/NO-LOG", onServerResponse);
+
+ function onServerResponse(pServerResponse) {
+
+ let response = JSON.parse(pServerResponse);
+ callBackFunction(response.err, response.exchangeResponse);
+
+ }
+ }
+}
diff --git a/CloudVM/PoloniexAPIClient.js b/CloudVM/PoloniexAPIClient.js
deleted file mode 100644
index e8f124edb..000000000
--- a/CloudVM/PoloniexAPIClient.js
+++ /dev/null
@@ -1,228 +0,0 @@
-function newPoloniexAPIClient() {
-
- const INFO_LOG = true;
- const LOG_FILE_CONTENT = true;
-
- const MODULE_NAME = "CloudVM -> Poloniex Client API";
-
- let thisObject = {
- API: {
- analizeResponse: analizeResponse,
- returnOpenOrders: returnOpenOrders,
- returnOrderTrades: returnOrderTrades,
- buy: buy,
- sell: sell,
- moveOrder: moveOrder,
- returnTicker: returnTicker
- }
- };
-
- return thisObject;
-
- function analizeResponse(logger, exchangeErr, exchangeResponse, notOkCallBack, okCallBack) {
-
- /* IMPORTANT> This function is an exact copy of the one running at the cloud, with a browsery applied. In this case it means the world global -> window. */
-
- /* This function analizes the different situations we might encounter trying to access Poloniex and returns appropiate standard errors. */
-
- try {
-
- let stringExchangeResponse = JSON.stringify(exchangeResponse);
- let stringExchangeErr = JSON.stringify(exchangeErr);
-
- if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] analizeResponse -> exchangeErr = " + stringExchangeErr); }
- if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, "[INFO] analizeResponse -> exchangeResponse = " + stringExchangeResponse); }
-
- if (stringExchangeResponse === undefined) {
-
- logger.write(MODULE_NAME, "[WARN] analizeResponse -> No response received from the exchange. Retrying Later.");
-
- notOkCallBack(global.DEFAULT_RETRY_RESPONSE);
- return;
- }
-
- if (stringExchangeErr.indexOf("ETIMEDOUT") > 0 ||
- stringExchangeErr.indexOf("ENOTFOUND") > 0 ||
- stringExchangeErr.indexOf("ECONNREFUSED") > 0 ||
- stringExchangeErr.indexOf("ESOCKETTIMEDOUT") > 0 ||
- stringExchangeErr.indexOf("ECONNRESET") > 0 ||
- (stringExchangeResponse !== undefined && (
- stringExchangeResponse.indexOf("Connection timed out") > 0 ||
- stringExchangeResponse.indexOf("Connection Error") > 0 ||
- stringExchangeResponse.indexOf("Bad gateway") > 0 ||
- stringExchangeResponse.indexOf("Nonce must be greater than") > 0 ||
- stringExchangeResponse.indexOf("Internal error. Please try again") > 0))) {
-
- logger.write(MODULE_NAME, "[ERROR] analizeResponse -> Somethng bad happened while trying to access the Exchange API. Requesting new execution later.");
- logger.write(MODULE_NAME, "[ERROR] analizeResponse -> stringExchangeErr = " + stringExchangeErr);
-
- notOkCallBack(window.DEFAULT_RETRY_RESPONSE);
- return;
-
- } else {
-
- if (JSON.stringify(exchangeResponse).indexOf("error") > 0) {
-
- logger.write(MODULE_NAME, "[ERROR] analizeResponse -> Unexpected response from the Exchange.");
- logger.write(MODULE_NAME, "[ERROR] analizeResponse -> JSON.stringify(exchangeErr) = " + JSON.stringify(exchangeErr));
- logger.write(MODULE_NAME, "[ERROR] analizeResponse -> exchangeErr = " + exchangeErr);
- logger.write(MODULE_NAME, "[ERROR] analizeResponse -> exchangeResponse = " + exchangeResponse);
-
- /* {"error":"Not enough USDT.","success":0}*/
-
- if (JSON.stringify(exchangeResponse).indexOf("Not enough") > 0) {
-
- let err = {
- resutl: window.CUSTOM_FAIL_RESPONSE.result,
- message: exchangeResponse.error
- };
-
- notOkCallBack(err);
-
- } else {
-
- notOkCallBack(window.DEFAULT_FAIL_RESPONSE);
-
- }
- return;
- }
-
- if (exchangeErr) {
-
- logger.write(MODULE_NAME, "[ERROR] analizeResponse -> Unexpected error trying to contact the Exchange.");
- logger.write(MODULE_NAME, "[ERROR] analizeResponse -> exchangeErr = " + exchangeErr);
-
- notOkCallBack(window.DEFAULT_FAIL_RESPONSE);
- return;
-
- } else {
-
- logger.write(MODULE_NAME, "[INFO] analizeResponse -> No problem found.");
- okCallBack();
- return;
- }
- }
-
- } catch (err) {
- logger.write(MODULE_NAME, "[ERROR] analizeResponse -> err.message = " + err.message);
- notOkCallBack(window.DEFAULT_FAIL_RESPONSE);
- return;
- }
- }
-
- function returnOpenOrders(pMarketAssetA, pMarketAssetB, callBackFunction) {
-
- let path = "PoloniexAPIClient" + "/"
- + "returnOpenOrders" + "/"
- + window.SESSION_TOKEN + "/"
- + pMarketAssetA + "/"
- + pMarketAssetB
- ;
-
- callServer(undefined, path + "/NO-LOG", onServerResponse);
-
- function onServerResponse(pServerResponse) {
-
- let response = JSON.parse(pServerResponse);
- callBackFunction(response.err, response.exchangeResponse);
-
- }
- }
-
- function returnOrderTrades(pPositionId, callBackFunction) {
-
- let path = "PoloniexAPIClient" + "/"
- + "returnOrderTrades" + "/"
- + window.SESSION_TOKEN + "/"
- + pPositionId
- ;
-
- callServer(undefined, path + "/NO-LOG", onServerResponse);
-
- function onServerResponse(pServerResponse) {
-
- let response = JSON.parse(pServerResponse);
- callBackFunction(response.err, response.exchangeResponse);
-
- }
- }
-
- function buy(pMarketAssetA, pMarketAssetB, pRate, pAmountB, callBackFunction) {
-
- let path = "PoloniexAPIClient" + "/"
- + "buy" + "/"
- + window.SESSION_TOKEN + "/"
- + pMarketAssetA + "/"
- + pMarketAssetB + "/"
- + pRate + "/"
- + pAmountB
- ;
-
- callServer(undefined, path + "/NO-LOG", onServerResponse);
-
- function onServerResponse(pServerResponse) {
-
- let response = JSON.parse(pServerResponse);
- callBackFunction(response.err, response.exchangeResponse);
-
- }
- }
-
- function sell(pMarketAssetA, pMarketAssetB, pRate, pAmountB, callBackFunction) {
-
- let path = "PoloniexAPIClient" + "/"
- + "sell" + "/"
- + window.SESSION_TOKEN + "/"
- + pMarketAssetA + "/"
- + pMarketAssetB + "/"
- + pRate + "/"
- + pAmountB
- ;
-
- callServer(undefined, path + "/NO-LOG", onServerResponse);
-
- function onServerResponse(pServerResponse) {
-
- let response = JSON.parse(pServerResponse);
- callBackFunction(response.err, response.exchangeResponse);
-
- }
- }
-
- function moveOrder(pPositionId, pNewRate, pPositionAmountB, callBackFunction) {
-
- let path = "PoloniexAPIClient" + "/"
- + "moveOrder" + "/"
- + window.SESSION_TOKEN + "/"
- + pPositionId + "/"
- + pNewRate + "/"
- + pPositionAmountB
- ;
-
- callServer(undefined, path + "/NO-LOG", onServerResponse);
-
- function onServerResponse(pServerResponse) {
-
- let response = JSON.parse(pServerResponse);
- callBackFunction(response.err, response.exchangeResponse);
-
- }
- }
-
- function returnTicker(callBackFunction) {
-
- let path = "PoloniexAPIClient" + "/"
- + "returnTicker" + "/"
- + window.SESSION_TOKEN
- ;
-
- callServer(undefined, path + "/NO-LOG", onServerResponse);
-
- function onServerResponse(pServerResponse) {
-
- let response = JSON.parse(pServerResponse);
- callBackFunction(response.err, response.exchangeResponse);
-
- }
- }
-}
diff --git a/Project.njsproj b/Project.njsproj
index 79f95a42d..d4fbd65a8 100644
--- a/Project.njsproj
+++ b/Project.njsproj
@@ -55,10 +55,9 @@
Code
-
+
-
Code
@@ -230,6 +229,7 @@
+
diff --git a/Scripts/AppLoader.js b/Scripts/AppLoader.js
index 1bcecfb26..b7def164d 100644
--- a/Scripts/AppLoader.js
+++ b/Scripts/AppLoader.js
@@ -64,7 +64,7 @@
"FloatingSpace/FloatingObject.js",
"FloatingSpace/FloatingLayer.js",
- "CloudVM/PoloniexAPIClient.js",
+ "CloudVM/Exchange/ExchangeAPI.js",
"CloudVM/CloudSupport.js",
"CloudVM/CloudRequire.js",
"CloudVM/WebFS.js",
diff --git a/server.js b/server.js
index 1020377e9..51deb685e 100644
--- a/server.js
+++ b/server.js
@@ -697,7 +697,7 @@ function onBrowserRequest(request, response) {
}
break;
- case "PoloniexAPIClient": // This is trying to access this library functionality from the broser.
+ case "ExchangeAPI": // This is trying to access this library functionality from the broser.
{
/* We are going to let access the exchange only to authenticated users, that measn that we need the a valid session token. */
@@ -711,38 +711,45 @@ function onBrowserRequest(request, response) {
let exchangeKey = session.exchangeKeys[0].key; // 0 because we only deal with one exchange for now.
let exchangeSecret = session.exchangeKeys[0].secret;
- const POLONIEX_CLIENT_MODULE = require('./Server/Exchange/' + 'ExchangeAPI');
- let poloniexApiClient = POLONIEX_CLIENT_MODULE.newPoloniexAPIClient(exchangeKey, exchangeSecret);
+ global.EXCHANGE_KEYS = {
+ "Poloniex": {
+ "Key": exchangeKey,
+ "Secret": exchangeSecret
+ }
+ }
+
+ const EXCHANGE_API = require('./Server/Exchange/' + 'ExchangeAPI');
+ let exchangeAPI = EXCHANGE_API.newExchangeAPI();
switch (requestParameters[2]) {
case "returnOpenOrders": {
- poloniexApiClient.API.returnOpenOrders(requestParameters[4], requestParameters[5], onExchangeResponse);
+ exchangeAPI.returnOpenOrders(requestParameters[4], requestParameters[5], onExchangeResponse);
break;
}
case "returnOrderTrades": {
- poloniexApiClient.API.returnOrderTrades(requestParameters[4], onExchangeResponse);
+ exchangeAPI.returnOrderTrades(requestParameters[4], onExchangeResponse);
break;
}
case "buy": {
- poloniexApiClient.API.buy(requestParameters[4], requestParameters[5], requestParameters[6], requestParameters[7], onExchangeResponse);
+ exchangeAPI.buy(requestParameters[4], requestParameters[5], requestParameters[6], requestParameters[7], onExchangeResponse);
break;
}
case "sell": {
- poloniexApiClient.API.sell(requestParameters[4], requestParameters[5], requestParameters[6], requestParameters[7], onExchangeResponse);
+ exchangeAPI.sell(requestParameters[4], requestParameters[5], requestParameters[6], requestParameters[7], onExchangeResponse);
break;
}
case "moveOrder": {
- poloniexApiClient.API.moveOrder(requestParameters[4], requestParameters[5], requestParameters[6], onExchangeResponse);
+ exchangeAPI.moveOrder(requestParameters[4], requestParameters[5], requestParameters[6], onExchangeResponse);
break;
}
case "returnTicker": {
- poloniexApiClient.API.returnTicker(onExchangeResponse);
+ exchangeAPI.returnTicker(onExchangeResponse);
break;
}
}