UNPKG

@5minds/processcube_engine

Version:

The ProcessCube Engine. Stores and executes BPMNs.

152 lines • 6.32 kB
"use strict"; 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