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();
}
}