const fs = require('fs'); const events = require('events'); const axios = require('axios').default; const C = require('./C'); const serverEnv = process.env['SERVER_ENV']; const event = new events.EventEmitter(); function rspErr(rsp, errCode, errMsg) { rsp.send(jsonEncode({ 'errcode': errCode, 'errmsg': errMsg })); } function rspOk(rsp) { rsp.send(jsonEncode({ 'errcode': 0, 'errmsg': '' })); } function rspData(rsp, data) { data['errcode'] = 0; data['errmsg'] = ''; rsp.send(jsonEncode(data)); } function readJsonFromFile(url) { const jsondata = fs.readFileSync(url, "utf8"); const json = JSON.parse(jsondata); return json; } async function sleep(timeout) { return new Promise(function (resolve, reject) { setTimeout(function () { resolve(); }, timeout); }); } function emptyReplace(val, newVal) { return !val ? newVal : val; } function throwError(msg) { console.log(msg); throw msg; } function isOnlineEnv() { return !serverEnv; } function isTestEnv() { return serverEnv == 'TEST'; } function getUtcTime() { return Math.floor((new Date()).getTime() / 1000); } function formatDate(date) { const year = date.getFullYear(); const month = date.getMonth() + 1;//月份是从0开始的 const day = date.getDate(); const hour = date.getHours(); const min = date.getMinutes(); const sec = date.getSeconds(); return year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day) + ' ' + (hour < 10 ? '0' + hour : hour) + ':' + (min < 10 ? '0' + min : min) + ':' + (sec < 10 ? '0' + sec : sec); } function pad(num, n) { let result = num.toString(); let len = result.length; while (len < n) { result = '0' + result; len++; } return result; } function registerEventHandler(eventName, handler) { event.on(eventName, handler); } function emitEvent(eventName, ...args) { event.emit(eventName, ...args); } function randRange(min, max) { if (min >= max) { return min; } return min + Math.floor(Math.random() * (max - min)); } function jsonEncode(obj) { return JSON.stringify(obj); } function jsonDecode(jsonStr) { try { return JSON.parse(jsonStr); } catch (err) { return null; } } function httpGet(url, params) { return new Promise((resolve) => { const ret = { err: null, data: null, }; axios({ method: 'get', url: url, timeout: 1000 * 10, params: params, responseType: 'text' }).then((response) => { ret.data = response; resolve(ret); }).catch((error) => { ret.err = error; resolve(ret); }); }); } function isSameAccount(a, b) { return a.toLowerCase() == b.toLowerCase(); } function getMintInstance(tokenType) { switch (tokenType) { case C.TOKEN_TYPE_HERO: case C.TOKEN_TYPE_EQUIP: case C.TOKEN_TYPE_CHIP: { return 'factoryInstance'; } break; case C.BLIND_BOX_TYPE_CHIP: { return 'boxproxyInstance'; } break; default: { return ''; break; } } } function getMintMethod(tokenType) { switch (tokenType) { case C.TOKEN_TYPE_HERO: { return 'mintHeroTo'; } break; case C.TOKEN_TYPE_EQUIP: { return 'mintEquipTo'; } break; case C.TOKEN_TYPE_CHIP: { return 'mintChipTo'; } break; case C.BLIND_BOX_TYPE_CHIP: { return 'mintBoxTo'; } break; default: { return ''; break; } } } exports.rspErr = rspErr; exports.rspOk = rspOk; exports.rspData = rspData; exports.readJsonFromFile = readJsonFromFile; exports.sleep = sleep; exports.emptyReplace = emptyReplace; exports.throwError = throwError; exports.isOnlineEnv = isOnlineEnv; exports.isTestEnv = isTestEnv; exports.getUtcTime = getUtcTime; exports.formatDate = formatDate; exports.pad = pad; exports.registerEventHandler = registerEventHandler; exports.emitEvent = emitEvent; exports.randRange = randRange; exports.jsonEncode = jsonEncode; exports.jsonDecode = jsonDecode; exports.httpGet = httpGet; exports.isSameAccount = isSameAccount; exports.getMintInstance = getMintInstance; exports.getMintMethod = getMintMethod;