UNPKG

acady-api-builder

Version:
78 lines 3.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AwsGatewayConverter = void 0; const acady_api_request_1 = require("../dto/acady-api-request"); const api_headers_1 = require("../core/api-headers"); const url_1 = require("url"); class AwsGatewayConverter { static convertRequest(event) { const request = new acady_api_request_1.AcadyApiRequest(); if (event.version === "1.0") { request.method = event.httpMethod; request.pathName = '/' + event.pathParameters.proxy; request.headers = new api_headers_1.ApiHeaders(); request.queryParams = event.queryStringParameters; if (event.multiValueHeaders) Object.keys(event.multiValueHeaders).forEach(key => { const values = event.multiValueHeaders[key]; for (let value of values) { request.headers.append(key.toLowerCase(), value); } }); request.endpoint = `https://${event.requestContext.domainName}/${event.requestContext.stage}`; const urlSearchParams = new url_1.URLSearchParams(); if (event.multiValueQueryStringParameters) Object.keys(event.multiValueQueryStringParameters).forEach(key => { const values = event.multiValueQueryStringParameters[key]; for (let value of values) { urlSearchParams.append(key, value); } }); request.fullUrl = request.endpoint + request.pathName; if (urlSearchParams.toString().length > 0) request.fullUrl += '?' + urlSearchParams.toString(); // console.log(request); } else if (event.version === "2.0") { request.method = event.requestContext.http.method; request.pathName = '/' + event.pathParameters.proxy; request.headers = new api_headers_1.ApiHeaders(); request.queryParams = event.queryStringParameters; Object.keys(event.headers).forEach(key => { request.headers.append(key.toLowerCase(), event.headers[key]); }); request.endpoint = `https://${event.requestContext.domainName}/${event.requestContext.stage}`; request.fullUrl = request.endpoint + request.pathName; if (event.rawQueryString.length > 0) request.fullUrl += '?' + event.rawQueryString; // console.log(request); } if (event.body) { let body = event.body; if (request.headers.getValue('content-type').startsWith('application/json')) { body = JSON.parse(body); } request.body = body; request.rawBody = event.body; } return request; } static convertResponse(acadyApiResponse, response) { response.statusCode = acadyApiResponse.status; response.multiValueHeaders = {}; for (let apiHeader of acadyApiResponse.headers.entries()) { const key = apiHeader.key; const value = apiHeader.value; if (!response.multiValueHeaders[key]) response.multiValueHeaders[key] = []; response.multiValueHeaders[key].push(value); } response.body = acadyApiResponse.body; if (acadyApiResponse.isBase64Encoded === true) { response.isBase64Encoded = true; } } } exports.AwsGatewayConverter = AwsGatewayConverter; AwsGatewayConverter.TYPE = "AWS_GATEWAY_HTTP"; //# sourceMappingURL=aws-gateway-converter.js.map