211 lines
7.4 KiB
JavaScript
211 lines
7.4 KiB
JavaScript
|
|
function newMarketFiles () {
|
|
const MODULE_NAME = 'Market Files'
|
|
const INFO_LOG = false
|
|
const ERROR_LOG = true
|
|
const logger = newWebDebugLog()
|
|
logger.fileName = MODULE_NAME
|
|
|
|
let thisObject = {
|
|
eventHandler: undefined,
|
|
getFile: getFile,
|
|
getExpectedFiles: getExpectedFiles,
|
|
getFilesLoaded: getFilesLoaded,
|
|
initialize: initialize,
|
|
finalize: finalize
|
|
}
|
|
|
|
let filesLoaded = 0
|
|
|
|
let fileCloud
|
|
|
|
let files = new Map()
|
|
|
|
let market
|
|
let exchange
|
|
let devTeam
|
|
let bot
|
|
let thisSet
|
|
let periodName
|
|
|
|
thisObject.eventHandler = newEventHandler()
|
|
|
|
let intervalHandle
|
|
|
|
return thisObject
|
|
|
|
function finalize () {
|
|
try {
|
|
if (INFO_LOG === true) { logger.write('[INFO] finalize -> Entering function.') }
|
|
|
|
clearInterval(intervalHandle)
|
|
|
|
filesLoaded = undefined
|
|
files = undefined
|
|
} catch (err) {
|
|
if (ERROR_LOG === true) { logger.write('[ERROR] finalize -> err = ' + err) }
|
|
}
|
|
}
|
|
|
|
function initialize (pDevTeam, pBot, pProduct, pSet, pExchange, pMarket, callBackFunction) {
|
|
try {
|
|
if (INFO_LOG === true) { logger.write('[INFO] initialize -> Entering function.') }
|
|
if (INFO_LOG === true) { logger.write('[INFO] initialize -> key = ' + pDevTeam.codeName + '-' + pBot.codeName + '-' + pProduct.codeName) }
|
|
|
|
exchange = ecosystem.getExchange(pProduct, pExchange)
|
|
|
|
if (exchange === undefined) {
|
|
throw 'Exchange not supoorted by this pProduct of the ecosystem! - pDevTeam.codeName = ' + pDevTeam.codeName + ', pBot.codeName = ' + pBot.codeName + ', pProduct.codeName = ' + pProduct.codeName + ', pExchange = ' + pExchange
|
|
}
|
|
|
|
intervalHandle = setInterval(updateFiles, _10_MINUTES_IN_MILISECONDS)
|
|
|
|
market = pMarket
|
|
devTeam = pDevTeam
|
|
bot = pBot
|
|
thisSet = pSet
|
|
|
|
fileCloud = newFileCloud()
|
|
fileCloud.initialize(pBot)
|
|
|
|
/* Now we will get the market files */
|
|
|
|
for (let i = 0; i < marketFilesPeriods.length; i++) {
|
|
let periodTime = marketFilesPeriods[i][0]
|
|
let periodName = marketFilesPeriods[i][1]
|
|
|
|
if (thisSet.validPeriods.includes(periodName) === true) {
|
|
fileCloud.getFile(devTeam, bot, thisSet, exchange, market, periodName, undefined, undefined, undefined, onFileReceived)
|
|
|
|
function onFileReceived (err, file) {
|
|
try {
|
|
if (INFO_LOG === true) { logger.write('[INFO] initialize -> onFileReceived -> Entering function.') }
|
|
|
|
switch (err.result) {
|
|
case GLOBAL.DEFAULT_OK_RESPONSE.result: {
|
|
if (INFO_LOG === true) { logger.write('[INFO] initialize -> onFileReceived -> Received OK Response.') }
|
|
break
|
|
}
|
|
|
|
case GLOBAL.DEFAULT_FAIL_RESPONSE.result: {
|
|
if (INFO_LOG === true) { logger.write('[INFO] initialize -> onFileReceived -> Received FAIL Response.') }
|
|
callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE)
|
|
return
|
|
}
|
|
|
|
case GLOBAL.CUSTOM_FAIL_RESPONSE.result: {
|
|
if (INFO_LOG === true) { logger.write('[INFO] initialize -> onFileReceived -> Received CUSTOM FAIL Response.') }
|
|
if (INFO_LOG === true) { logger.write('[INFO] initialize -> onFileReceived -> err.message = ' + err.message) }
|
|
|
|
callBackFunction(err)
|
|
return
|
|
}
|
|
|
|
default: {
|
|
if (INFO_LOG === true) { logger.write('[INFO] initialize -> onFileReceived -> Received Unexpected Response.') }
|
|
callBackFunction(err)
|
|
return
|
|
}
|
|
}
|
|
|
|
files.set(periodTime, file)
|
|
|
|
filesLoaded++
|
|
|
|
callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE, thisObject) // Note that the callback is called for every file loaded.
|
|
} catch (err) {
|
|
if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> onFileReceived -> err = ' + err) }
|
|
callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} catch (err) {
|
|
if (ERROR_LOG === true) { logger.write('[ERROR] initialize -> err = ' + err) }
|
|
callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE)
|
|
}
|
|
}
|
|
|
|
function updateFiles () {
|
|
try {
|
|
let updateFiles = 0
|
|
|
|
if (INFO_LOG === true) { logger.write('[INFO] updateFiles -> Entering function.') }
|
|
|
|
/* Now we will get the market files */
|
|
|
|
for (let i = 0; i < marketFilesPeriods.length; i++) {
|
|
let periodTime = marketFilesPeriods[i][0]
|
|
let periodName = marketFilesPeriods[i][1]
|
|
|
|
if (thisSet.validPeriods.includes(periodName) === true) {
|
|
fileCloud.getFile(devTeam, bot, thisSet, exchange, market, periodName, undefined, undefined, undefined, onFileReceived)
|
|
|
|
function onFileReceived (err, file) {
|
|
try {
|
|
if (INFO_LOG === true) { logger.write('[INFO] updateFiles -> onFileReceived -> Entering function.') }
|
|
|
|
switch (err.result) {
|
|
case GLOBAL.DEFAULT_OK_RESPONSE.result: {
|
|
if (INFO_LOG === true) { logger.write('[INFO] updateFiles -> onFileReceived -> Received OK Response.') }
|
|
break
|
|
}
|
|
|
|
case GLOBAL.DEFAULT_FAIL_RESPONSE.result: {
|
|
if (INFO_LOG === true) { logger.write('[INFO] updateFiles -> onFileReceived -> Received FAIL Response.') }
|
|
return
|
|
}
|
|
|
|
case GLOBAL.CUSTOM_FAIL_RESPONSE.result: {
|
|
if (INFO_LOG === true) { logger.write('[INFO] updateFiles -> onFileReceived -> Received CUSTOM FAIL Response.') }
|
|
if (INFO_LOG === true) { logger.write('[INFO] updateFiles -> onFileReceived -> err.message = ' + err.message) }
|
|
return
|
|
}
|
|
|
|
default: {
|
|
if (INFO_LOG === true) { logger.write('[INFO] updateFiles -> onFileReceived -> Received Unexpected Response.') }
|
|
return
|
|
}
|
|
}
|
|
|
|
files.set(periodTime, file)
|
|
updateFiles++
|
|
|
|
if (updateFiles === marketFilesPeriods.length) {
|
|
if (INFO_LOG === true) { logger.write('[INFO] updateFiles -> onFileReceived -> All files received. ') }
|
|
if (INFO_LOG === true) { logger.write('[INFO] updateFiles -> onFileReceived -> devTeam = ' + devTeam.codeName) }
|
|
if (INFO_LOG === true) { logger.write('[INFO] updateFiles -> onFileReceived -> bot = ' + bot.codeName) }
|
|
if (INFO_LOG === true) { logger.write('[INFO] updateFiles -> onFileReceived -> thisSet = ' + thisSet.codeName) }
|
|
|
|
thisObject.eventHandler.raiseEvent('Files Updated', undefined)
|
|
}
|
|
} catch (err) {
|
|
if (ERROR_LOG === true) { logger.write('[ERROR] updateFiles -> onFileReceived -> err = ' + err) }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} catch (err) {
|
|
if (ERROR_LOG === true) { logger.write('[ERROR] updateFiles -> err = ' + err) }
|
|
}
|
|
}
|
|
|
|
function getFile (pPeriod) {
|
|
if (INFO_LOG === true) { logger.write('[INFO] getFile -> Entering function.') }
|
|
|
|
return files.get(pPeriod)
|
|
}
|
|
|
|
function getExpectedFiles () {
|
|
if (INFO_LOG === true) { logger.write('[INFO] getExpectedFiles -> Entering function.') }
|
|
|
|
return marketFilesPeriods.length
|
|
}
|
|
|
|
function getFilesLoaded () {
|
|
if (INFO_LOG === true) { logger.write('[INFO] getFilesLoaded -> Entering function.') }
|
|
|
|
return filesLoaded
|
|
}
|
|
}
|