@webfaas/webfaas-plugin-endpoint-http
Version:
WebFaaS Framework - Plugin - Endpoint - HTTP
54 lines • 3.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SendMessageJsonRpc = void 0;
const webfaas_core_1 = require("@webfaas/webfaas-core");
const MessageUtil_1 = require("@webfaas/webfaas-core/lib/Util/MessageUtil");
const uuid_1 = require("uuid");
class SendMessageJsonRpc {
constructor(endPointHTTP) {
this.endPointHTTP = endPointHTTP;
this.core = endPointHTTP.getCore();
this.log = endPointHTTP.getLog();
}
processRequest(request, response, body) {
let payloadRequest;
let msg;
try {
payloadRequest = webfaas_core_1.MessageUtil.parseJsonRpcRequest(body);
}
catch (errTryParse) {
let responseJson = webfaas_core_1.MessageUtil.parseJsonRpcResponseError(webfaas_core_1.MessageUtil.convertErrorToCodeJsonRpc(errTryParse), errTryParse);
this.endPointHTTP.writeEnd(response, 200, this.endPointHTTP.buildHeaders("application/json-rpc"), JSON.stringify(responseJson));
this.log.writeError("processRequest", errTryParse, undefined, __filename);
return;
}
msg = webfaas_core_1.MessageUtil.parseMessageByPayloadJsonRpc(payloadRequest, "", request.method, request.headers);
if (msg) {
let requestID = payloadRequest.id || webfaas_core_1.MessageUtil.parseString(request.headers["X-Request-ID"]) || uuid_1.v1();
msg.header.messageID = requestID.toString();
this.core.sendMessage(msg).then((msgResponse) => {
let responseJsonRpc;
let statusCode = 200;
let headers = this.endPointHTTP.buildHeaders("application/json-rpc");
if (msgResponse) {
responseJsonRpc = webfaas_core_1.MessageUtil.parseJsonRpcResponseSuccess(msgResponse.payload, requestID);
}
else {
responseJsonRpc = webfaas_core_1.MessageUtil.parseJsonRpcResponseSuccess(null, requestID);
}
this.endPointHTTP.writeEnd(response, statusCode, headers, JSON.stringify(responseJsonRpc));
}).catch((errSend) => {
let responseJson = webfaas_core_1.MessageUtil.parseJsonRpcResponseError(webfaas_core_1.MessageUtil.convertErrorToCodeJsonRpc(errSend), errSend);
this.endPointHTTP.writeEnd(response, 200, this.endPointHTTP.buildHeaders("application/json-rpc"), JSON.stringify(responseJson));
this.log.writeError("processRequest", errSend, undefined, __filename);
});
}
else {
let responseJson = webfaas_core_1.MessageUtil.parseJsonRpcResponseError(MessageUtil_1.JsonRpcErrorTypeEnum.INVALID_REQUEST, new webfaas_core_1.WebFaasError.SecurityError(webfaas_core_1.WebFaasError.SecurityErrorTypeEnum.PAYLOAD_INVALID, "empty payload"));
this.endPointHTTP.writeEnd(response, 200, this.endPointHTTP.buildHeaders("application/json-rpc"), JSON.stringify(responseJson));
this.log.writeError("processRequest", new Error("payload required"), undefined, __filename);
}
}
}
exports.SendMessageJsonRpc = SendMessageJsonRpc;
//# sourceMappingURL=SendMessageJsonRpc.js.map