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

Function genWebserverHandlerBody

src/cppCodeWebserver.ts:4–67  ·  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 genWebserverHandlerBody = (d: TemplateData, source: TransformedSource, path: string): string => {
5 const lines: string[] = [];
6 const etagCheck = sw(d.etag, {
7 always: [
8 ` if (server->hasHeader("If-None-Match") && server->header("If-None-Match").equals(etag_${source.dataname})) {`,
9 ` server->send(304);`,
10 ` ${d.definePrefix}_onFileServed("${path}", 304);`,
11 ` return;`,
12 ` }`
13 ].join('\n'),
14 compiler: [
15 ` #ifdef ${d.definePrefix}_ENABLE_ETAG`,
16 ` if (server->hasHeader("If-None-Match") && server->header("If-None-Match").equals(etag_${source.dataname})) {`,
17 ` server->send(304);`,
18 ` ${d.definePrefix}_onFileServed("${path}", 304);`,
19 ` return;`,
20 ` }`,
21 ` #endif`
22 ].join('\n')
23 });
24 if (etagCheck) lines.push(etagCheck);
25 const cacheHeaders = sw(d.etag, {
26 always: [
27 ` server->sendHeader("Cache-Control", "${cacheCtrl(source)}");`,
28 ` server->sendHeader("ETag", etag_${source.dataname});`
29 ].join('\n'),
30 compiler: [
31 ` #ifdef ${d.definePrefix}_ENABLE_ETAG`,
32 ` server->sendHeader("Cache-Control", "${cacheCtrl(source)}");`,
33 ` server->sendHeader("ETag", etag_${source.dataname});`,
34 ` #endif`
35 ].join('\n')
36 });
37 if (cacheHeaders) lines.push(cacheHeaders);
38 lines.push(
39 sw(d.gzip, {
40 always: [
41 ...(source.isGzip ? [` server->sendHeader("Content-Encoding", "gzip");`] : []),
42 ` server->setContentLength(${source.lengthGzip});`,
43 ` server->send(200, "${source.mime}", "");`,
44 ` ${d.definePrefix}_sendChunked(server, datagzip_${source.dataname}, ${source.lengthGzip});`
45 ].join('\n'),
46 never: [
47 ` server->setContentLength(${source.length});`,
48 ` server->send(200, "${source.mime}", "");`,
49 ` ${d.definePrefix}_sendChunked(server, data_${source.dataname}, ${source.length});`
50 ].join('\n'),
51 compiler: [
52 ` #ifdef ${d.definePrefix}_ENABLE_GZIP`,
53 ...(source.isGzip ? [` server->sendHeader("Content-Encoding", "gzip");`] : []),
54 ` server->setContentLength(${source.lengthGzip});`,
55 ` server->send(200, "${source.mime}", "");`,
56 ` ${d.definePrefix}_sendChunked(server, datagzip_${source.dataname}, ${source.lengthGzip});`,
57 ` #else`,
58 ` server->setContentLength(${source.length});`,
59 ` server->send(200, "${source.mime}", "");`,
60 ` ${d.definePrefix}_sendChunked(server, data_${source.dataname}, ${source.length});`,
61 ` #endif`

Callers 1

genWebserverCppFunction · 0.85

Calls 2

swFunction · 0.90
cacheCtrlFunction · 0.90

Tested by

no test coverage detected