@webfaas/webfaas-plugin-endpoint-http
Version:
WebFaaS Framework - Plugin - Endpoint - HTTP
87 lines • 4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SendMessageRest = void 0;
const url = require("url");
const webfaas_core_1 = require("@webfaas/webfaas-core");
const uuid_1 = require("uuid");
class SendMessageRest {
constructor(endPointHTTP) {
this.endPointHTTP = endPointHTTP;
this.core = endPointHTTP.getCore();
this.log = endPointHTTP.getLog();
}
processRequest(request, response, body) {
let requestContentType = request.headers["content-type"] || "";
let payload;
let msg;
if (body.length) {
if (requestContentType === "application/json") {
try {
payload = JSON.parse(body.toString());
}
catch (errTryParse) {
this.log.writeError("processRequest", errTryParse, undefined, __filename);
this.endPointHTTP.writeEnd(response, 400, this.endPointHTTP.buildHeaders(), "Parse error");
return;
}
}
else {
payload = body;
}
}
else {
payload = null;
}
let urlString = decodeURI(request.url || "");
let route = this.endPointHTTP.getConfig().route[urlString];
if (route) {
urlString = route;
}
let urlObj = url.parse(urlString, true);
msg = webfaas_core_1.MessageUtil.parseMessageByUrlPath(urlObj.pathname || "", "", payload, request.method, request.headers);
if (msg) {
msg.header.messageID = msg.header.messageID || webfaas_core_1.MessageUtil.parseString(request.headers["X-Request-ID"]) || uuid_1.v1();
this.core.sendMessage(msg).then((msgResponse) => {
let chunk;
let statusCode = 200;
let headers = this.endPointHTTP.buildHeaders("application/json");
if (msgResponse) {
if (msgResponse.header && msgResponse.header.http) {
if (msgResponse.header.http.statusCode) {
statusCode = msgResponse.header.http.statusCode;
}
if (msgResponse.header.http.headers) {
headers = msgResponse.header.http.headers;
}
if (msgResponse.header.http.contentType) {
headers["content-type"] = msgResponse.header.http.contentType;
}
}
if (msgResponse.payload === undefined || msgResponse.payload === null) {
chunk = undefined;
statusCode = 204; //No Content
}
else {
chunk = msgResponse.payload;
if (headers["content-type"] === "application/json" && !Buffer.isBuffer(chunk)) {
chunk = JSON.stringify(chunk);
}
}
}
else {
chunk = undefined;
statusCode = 204; //No Content
}
this.endPointHTTP.writeEnd(response, statusCode, headers, chunk);
}).catch((errSend) => {
this.endPointHTTP.writeEnd(response, webfaas_core_1.MessageUtil.convertErrorToCodeHttp(errSend), this.endPointHTTP.buildHeaders("application/json"), JSON.stringify(errSend));
});
}
else {
let errValidate = new webfaas_core_1.WebFaasError.ValidateError("0", "", "Module name and version required");
this.endPointHTTP.writeEnd(response, webfaas_core_1.MessageUtil.convertErrorToCodeHttp(errValidate), this.endPointHTTP.buildHeaders("application/json"), JSON.stringify(errValidate));
}
}
}
exports.SendMessageRest = SendMessageRest;
//# sourceMappingURL=SendMessageRest.js.map