@dooboostore/simple-boot-http-server-ssr
Version:
front end SPA frameworks SSR
72 lines • 3.6 kB
JavaScript
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