UNPKG

@dooboostore/simple-boot-http-server-ssr

Version:
72 lines 3.6 kB
import { __awaiter, __decorate, __metadata } from "tslib"; import { HttpHeaders } from '../codes/HttpHeaders'; import { Intent, PublishType } from '@dooboostore/simple-boot/intent/Intent'; import { IntentManager } from '@dooboostore/simple-boot/intent/IntentManager'; import { Sim } from '@dooboostore/simple-boot/decorators/SimDecorator'; import { HttpStatus } from '@dooboostore/simple-boot-http-server/codes/HttpStatus'; import { Mimes } from '../codes/Mimes'; let IntentSchemeFilter = class IntentSchemeFilter { constructor(intentManager) { this.intentManager = intentManager; } onInit(app) { return __awaiter(this, void 0, void 0, function* () { }); } proceedBefore(_a) { return __awaiter(this, arguments, void 0, function* ({ rr, app }) { var _b; // const rr = rrr; const url = rr.reqUrl; const contentLength = Number(rr.reqHeader((_b = HttpHeaders.ContentLength.toLowerCase()) !== null && _b !== void 0 ? _b : '0')); const acceptType = rr.reqHeader(HttpHeaders.Accept); const contentType = rr.reqHeader(HttpHeaders.ContentType); const intentScheme = rr.reqHeader(HttpHeaders.XSimpleBootSsrIntentScheme); if (acceptType === Mimes.ApplicationJsonPostSimpleBootSsrIntentScheme && intentScheme) { let intent = new Intent(`${intentScheme}:/${url}`); intent.publishType = PublishType.INLINE_DATA_PARAMETERS; // const responseHeader = {} as any; // responseHeader[HttpHeaders.ContentType] = Mimes.ApplicationJson; if (contentLength > 0) { if (contentType.includes(Mimes.ApplicationJson)) { intent.data = [yield rr.reqBodyJsonData(), rr]; } else if (contentType.includes(Mimes.MultipartFormData)) { intent.data = [yield rr.reqBodyMultipartFormDataObject(), rr]; } const rdatas = this.intentManager.publish(intent); const rdata = rdatas[0]; const wdata = rdata instanceof Promise ? yield rdata : rdata; rr.resStatusCode(HttpStatus.Ok); rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]); yield rr.resEnd(wdata ? JSON.stringify(wdata) : undefined); } else { intent.data = rr.reqUrlSearchParamTuples.length > 0 ? [rr.reqUrlSearchParamsObj, rr] : [rr]; const rdatas = this.intentManager.publish(intent); const rdata = rdatas[0]; const wdata = rdata instanceof Promise ? yield rdata : rdata; rr.resStatusCode(HttpStatus.Ok); rr.resSetHeader(HttpHeaders.ContentType, [Mimes.ApplicationJson]); yield rr.resEnd(wdata ? JSON.stringify(wdata) : undefined); } // console.log('---------3--intent request', rr.req.readable, rr.req.readableLength); return false; } else { return true; } }); } proceedAfter(_a) { return __awaiter(this, arguments, void 0, function* ({ rr, app }) { return true; }); } }; IntentSchemeFilter = __decorate([ Sim, __metadata("design:paramtypes", [IntentManager]) ], IntentSchemeFilter); export { IntentSchemeFilter }; //# sourceMappingURL=IntentSchemeFilter.js.map