|
| 1 | +import AWS from 'aws-sdk'; |
| 2 | +import express from 'express'; |
| 3 | +import { Release, Tracer } from 'tracers/Tracer'; |
| 4 | +import { awsAccessKeyId, awsSecretAccessKey } from 'config/environments'; |
| 5 | +import { BadRequest } from 'ts-httpexceptions'; |
| 6 | + |
| 7 | +export class LambdaTracer extends Tracer { |
| 8 | + static lambda = new AWS.Lambda({ |
| 9 | + region: 'us-east-2', |
| 10 | + accessKeyId: awsAccessKeyId, |
| 11 | + secretAccessKey: awsSecretAccessKey, |
| 12 | + }); |
| 13 | + |
| 14 | + async build(release: Release) { |
| 15 | + } |
| 16 | + |
| 17 | + route(router: express.Router) { |
| 18 | + router.post(`/${this.lang}`, (req, res, next) => { |
| 19 | + const {code} = req.body; |
| 20 | + LambdaTracer.lambda.invoke({ |
| 21 | + FunctionName: `extractor-${this.lang}`, |
| 22 | + InvocationType: 'RequestResponse', |
| 23 | + Payload: JSON.stringify(code), |
| 24 | + }, function (err, data) { |
| 25 | + if (err) return next(err); |
| 26 | + if (typeof data.Payload !== 'string') return next(new Error('Unexpected Payload Type')); |
| 27 | + const payload = JSON.parse(data.Payload); |
| 28 | + if (!payload.success) return next(new BadRequest(payload.errorMessage)); |
| 29 | + res.send(payload.commands); |
| 30 | + }); |
| 31 | + }); |
| 32 | + } |
| 33 | +} |
0 commit comments