@5minds/processcube_engine
Version:
The ProcessCube Engine. Stores and executes BPMNs.
152 lines • 6.32 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CustomEndpointController = void 0;
const inversify_1 = require("inversify");
const processcube_engine_sdk_1 = require("@5minds/processcube_engine_sdk");
const Contracts_1 = require("../../Contracts");
const BaseController_1 = require("./BaseController");
let CustomEndpointController = class CustomEndpointController extends BaseController_1.BaseController {
customEndpointServiceProxy;
constructor(customEndpointServiceProxy) {
super();
this.logger = new processcube_engine_sdk_1.Logger('api:http:custom_endpoint_controller');
this.customEndpointServiceProxy = customEndpointServiceProxy;
}
async handle(request, response) {
const path = request.route.path;
const method = request.method.toLowerCase();
const routeHandlerRequest = {
accepted: request.accepted,
baseUrl: request.baseUrl,
body: request.body,
complete: request.complete,
cookies: request.cookies,
fresh: request.fresh,
headers: request.headers,
hostname: request.hostname,
httpVersion: request.httpVersion,
httpVersionMajor: request.httpVersionMajor,
httpVersionMinor: request.httpVersionMinor,
identity: request.identity,
ip: request.ip,
ips: request.ips,
method: request.method,
originalUrl: request.originalUrl,
params: request.params,
path: request.path,
protocol: request.protocol,
query: request.query,
rawHeaders: request.rawHeaders,
route: request.route,
secure: request.secure,
signedCookies: request.signedCookies,
stale: request.stale,
subdomains: request.subdomains,
xhr: request.xhr,
};
this.logger.debug('Received `custom http route` http request', {
path: request.route.path,
method: request.method,
routeHandlerRequest: routeHandlerRequest,
});
const result = await this.customEndpointServiceProxy.handle(path, method, routeHandlerRequest);
response.status(result.status || 200);
if (result.append) {
Object.keys(result.append).forEach((key) => {
response.append(key, result.append[key]);
});
}
if (result.attachment !== undefined) {
if (result.attachment == null) {
response.attachment();
}
else {
response.attachment(result.attachment);
}
}
if (result.links) {
response.links(result.links);
}
if (result.location) {
response.location(result.location);
}
if (result.cookies) {
for (const cookie of result.cookies) {
response.cookie(cookie.name, cookie.value, cookie.options);
}
}
if (result.clearCookies) {
for (const cookie of result.clearCookies) {
response.clearCookie(cookie.name, cookie.options);
}
}
if (result.set) {
response.set(result.set);
}
if (result.type) {
response.type(result.type);
}
if (result.vary) {
if (Array.isArray(result.vary)) {
for (const vary of result.vary) {
response.vary(vary);
}
}
else {
response.vary(result.vary);
}
}
if (result.trailers) {
response.addTrailers(result.trailers);
}
switch (result.action.type) {
case 'send':
response.send(result.action.result);
break;
case 'json':
response.json(result.action.result);
break;
case 'jsonp':
response.jsonp(result.action.result);
break;
case 'end':
response.end(result.action.chunk, result.action.encoding);
break;
case 'sendStatus':
response.sendStatus(result.status);
break;
case 'redirect':
response.redirect(result.action.statusCode ?? 302, result.action.url);
break;
case 'download':
response.download(result.action.path, result.action.filename, result.action.options);
break;
case 'sendFile':
response.sendFile(result.action.path, result.action.options);
break;
default:
const errorMessage = `Unknown action type: ${result.action.type}`;
response.status(500).send(errorMessage);
throw new Error(errorMessage);
}
}
};
exports.CustomEndpointController = CustomEndpointController;
exports.CustomEndpointController = CustomEndpointController = __decorate([
(0, inversify_1.injectable)(),
__param(0, (0, inversify_1.inject)(Contracts_1.IocRegistrationKeys.api.services.CustomEndpointServiceProxy)),
__metadata("design:paramtypes", [Object])
], CustomEndpointController);
//# sourceMappingURL=CustomEndpointController.js.map