Sha256: 4aaf4a941d19d493f7624cc244f347f9855266a67c18d470960ebe0fac8d7632
Contents?: true
Size: 1.52 KB
Versions: 3
Compression:
Stored size: 1.52 KB
Contents
const AbstractHandler = require('./AbstractHandler') class InvokeGlobalMethodHandler extends AbstractHandler { requiredParametersCount = 1 constructor() { super() } process(command) { try { if (command.payload.length < this.requiredParametersCount) { throw new Error('Invoke Global Method parameters mismatch') } const { payload } = command const splitted = payload[0].split('.') let methodToInvoke for (let i = 0; i < splitted.length; i++) { methodToInvoke = !methodToInvoke ? global[splitted[i]] : methodToInvoke[splitted[i]] } if (typeof methodToInvoke === 'undefined') { let methods = Object.getOwnPropertyNames(global).filter(function (property) { return typeof global[property] === 'function' }) let message = `Method ${payload[0]} not found in global. Available methods:\n` methods.forEach((methodIter) => { message += `${methodIter}\n` }) throw new Error(message) } if (payload.length > 1) { const args = payload.slice(1) return methodToInvoke(args) } else { return methodToInvoke() } } catch (error) { throw this.process_stack_trace(error, this.constructor.name) } } } module.exports = new InvokeGlobalMethodHandler()
Version data entries
3 entries across 3 versions & 1 rubygems