Files
Superalgos/CloudVM/CloudVM.js
T

130 lines
4.1 KiB
JavaScript


function newCloudVM () {
const MODULE_NAME = 'CloudVM'
const INFO_LOG = false
const ERROR_LOG = true
const logger = newWebDebugLog()
logger.fileName = MODULE_NAME
var thisObject = {
onBotPlayPressed: onBotPlayPressed,
onBotStopPressed: onBotStopPressed
}
let root = newRoot()
let intervalHandler
let previousBotCode = ''
let errorsCheckingForBotCodeChanges = 0
return thisObject
function onBotPlayPressed (pUI_COMMANDS) {
try {
if (INFO_LOG === true) { logger.write('[INFO] onBotPlayPressed -> Entering function.') }
window.SHALL_BOT_STOP = false
errorsCheckingForBotCodeChanges = 0
window.CURRENT_ENVIRONMENT = 'Develop'
window.CURRENT_EXECUTION_AT = 'Browser'
window.STORAGE_PERMISSIONS = ecosystem.getStoragePermissions()
window.EXCHANGE_NAME = 'Poloniex'
window.MARKET = {
assetA: 'USDT',
assetB: 'BTC'
}
/*
When running at the browser, the AACloud VM will look for this data, in this case it does not contain any key or secret, since the browser only know the
session token the user received when he logged in.
*/
window.EXCHANGE_KEYS = {
Poloniex: {
Key: '',
Secret: ''
}
}
root.initialize(pUI_COMMANDS, onInitialized)
function onInitialized () {
try {
if (INFO_LOG === true) { logger.write('[INFO] onBotPlayPressed -> Entering function.') }
root.start()
intervalHandler = setInterval(checkForChangesInBotCode, 10000)
} catch (err) {
if (ERROR_LOG === true) { logger.write('[ERROR] onBotPlayPressed -> onInitialized -> err.message = ' + err.message) }
}
}
} catch (err) {
if (ERROR_LOG === true) { logger.write('[ERROR] onBotPlayPressed -> err.message = ' + err.message) }
}
}
function onBotStopPressed () {
if (INFO_LOG === true) { logger.write('[INFO] onBotStopPressed -> Entering function.') }
window.SHALL_BOT_STOP = true
errorsCheckingForBotCodeChanges = 0
}
function checkForChangesInBotCode () {
try {
if (INFO_LOG === true) { logger.write('[INFO] checkForChangesInBotCode -> Entering function.') }
let botFunction = newUserBot
if (botFunction !== undefined) {
let currentBotCode = botFunction.toString()
if (previousBotCode !== '') {
if (currentBotCode !== previousBotCode) {
console.log('CloudVM -> Bot code changes detected.')
let path = window.canvasApp.urlPrefix
+ 'AABrowserAPI' + '/'
+ 'saveBotCode' + '/'
+ window.DEV_TEAM + '/'
+ 'members' + '/'
+ window.USER_LOGGED_IN + '/'
+ window.CURRENT_BOT_REPO + '/'
+ window.CURRENT_PROCESS + '/'
+ 'User.Bot.js'
callServer(currentBotCode, path, onServerResponse)
function onServerResponse (err) {
err = JSON.parse(err)
if (INFO_LOG === true) { logger.write('[INFO] checkForChangesInBotCode -> onServerResponse -> Entering function.') }
if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
if (ERROR_LOG === true) { logger.write('[ERROR] checkForChangesInBotCode -> onServerResponse -> err.message = ' + err.message) }
console.log('CloudVM -> Changes in code NOT saved. Plase check the error log and try again.')
return
}
console.log('CloudVM -> Changes in code saved.')
}
}
}
previousBotCode = currentBotCode
}
} catch (err) {
if (ERROR_LOG === true) { logger.write('[ERROR] checkForChangesInBotCode -> err.message = ' + err.message) }
errorsCheckingForBotCodeChanges++
if (errorsCheckingForBotCodeChanges > 2) {
if (ERROR_LOG === true) { logger.write('[ERROR] checkForChangesInBotCode -> Giving up.') }
clearInterval(intervalHandler)
}
}
}
}