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

Version Path
javonet-ruby-sdk-2.5.11 lib/javonet-ruby-sdk/Binaries/Nodejs/lib/core/handler/InvokeGlobalMethodHandler.js
javonet-ruby-sdk-2.5.10 lib/javonet-ruby-sdk/Binaries/Nodejs/lib/core/handler/InvokeGlobalMethodHandler.js
javonet-ruby-sdk-2.5.9 lib/javonet-ruby-sdk/Binaries/Nodejs/lib/core/handler/InvokeGlobalMethodHandler.js