ngrokHandler()

in src/agents/ngrok.js [84:133]


    ngrokHandler(req, res) {
        // check authorization against our unique token
        const authHeader = req.headers.authorization;
        if (authHeader !== this.ngrokAuth) {
            res.statusCode = 401;
            res.end();
            return;
        }

        if (req.method === 'POST') {
            // agent POSTs arguments as json body
            let body = '';
            // collect full request body first
            req.on('data', chunk => {
                body += chunk.toString();
            });
            req.on('end', async () => {
                try {
                    const params = JSON.parse(body);
                    const activationId = params.$activationId;
                    delete params.$activationId;

                    log.verbose(); // because of the .....
                    log.log();
                    log.highlight("Activation: ", activationId);
                    log.verbose("Parameters:", params);

                    const startTime = Date.now();

                    const result = await this.invoker.run(params, activationId);

                    const duration = Date.now() - startTime;
                    log.succeed(`Completed activation ${activationId} in ` + log.highlightColor(`${duration/1000.0} sec`));
                    log.verbose("Result:", result);

                    res.statusCode = 200;
                    res.setHeader("Content-Type", "application/json");
                    res.end(JSON.stringify(result));

                } catch (e) {
                    log.error(e);
                    res.statusCode = 400;
                    res.end();
                }
            });
        } else {
            res.statusCode = 404;
            res.end();
        }
    }