MCPcopy Create free account
hub / github.com/BCsabaEngine/svelteesp32 / genAsyncHandlerBody

Function genAsyncHandlerBody

src/cppCodeAsync.ts:4–59  ·  view source on GitHub ↗
(d: TemplateData, source: TransformedSource, path: string)

Source from the content-addressed store, hash-verified

2import { cacheCtrl, genCommonHeader, genDataArrays, genEtagArrays, genHook, genManifest, sw } from './cppCode';
3
4const genAsyncHandlerBody = (d: TemplateData, source: TransformedSource, path: string): string => {
5 const lines: string[] = [];
6 const etagCheck = sw(d.etag, {
7 always: [
8 ` const AsyncWebHeader* h = request->getHeader("If-None-Match");`,
9 ` if (h && h->value().equals(etag_${source.dataname})) {`,
10 ` ${d.definePrefix}_onFileServed("${path}", 304);`,
11 ` request->send(304);`,
12 ` return;`,
13 ` }`
14 ].join('\n'),
15 compiler: [
16 ` #ifdef ${d.definePrefix}_ENABLE_ETAG`,
17 ` const AsyncWebHeader* h = request->getHeader("If-None-Match");`,
18 ` if (h && h->value().equals(etag_${source.dataname})) {`,
19 ` ${d.definePrefix}_onFileServed("${path}", 304);`,
20 ` request->send(304);`,
21 ` return;`,
22 ` }`,
23 ` #endif`
24 ].join('\n')
25 });
26 if (etagCheck) lines.push(etagCheck);
27 lines.push(
28 sw(d.gzip, {
29 always: [
30 ` AsyncWebServerResponse *response = request->beginResponse(200, "${source.mime}", datagzip_${source.dataname}, ${source.lengthGzip});`,
31 ...(source.isGzip ? [` response->addHeader("Content-Encoding", "gzip");`] : [])
32 ].join('\n'),
33 never: ` AsyncWebServerResponse *response = request->beginResponse(200, "${source.mime}", data_${source.dataname}, ${source.length});`,
34 compiler: [
35 ` #ifdef ${d.definePrefix}_ENABLE_GZIP`,
36 ` AsyncWebServerResponse *response = request->beginResponse(200, "${source.mime}", datagzip_${source.dataname}, ${source.lengthGzip});`,
37 ...(source.isGzip ? [` response->addHeader("Content-Encoding", "gzip");`] : []),
38 ` #else`,
39 ` AsyncWebServerResponse *response = request->beginResponse(200, "${source.mime}", data_${source.dataname}, ${source.length});`,
40 ` #endif`
41 ].join('\n')
42 })
43 );
44 const cacheHeaders = sw(d.etag, {
45 always: [
46 ` response->addHeader("Cache-Control", "${cacheCtrl(source)}");`,
47 ` response->addHeader("ETag", etag_${source.dataname});`
48 ].join('\n'),
49 compiler: [
50 ` #ifdef ${d.definePrefix}_ENABLE_ETAG`,
51 ` response->addHeader("Cache-Control", "${cacheCtrl(source)}");`,
52 ` response->addHeader("ETag", etag_${source.dataname});`,
53 ` #endif`
54 ].join('\n')
55 });
56 if (cacheHeaders) lines.push(cacheHeaders);
57 lines.push(` ${d.definePrefix}_onFileServed("${path}", 200);`, ` request->send(response);`);
58 return lines.join('\n');
59};
60
61export const genAsyncCpp = (d: TemplateData): string => {

Callers 1

genAsyncCppFunction · 0.85

Calls 2

swFunction · 0.90
cacheCtrlFunction · 0.90

Tested by

no test coverage detected