Creates and iCal feed that calendars can subscribe to for all of the various school lunches.

Readme
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { buildDoeMenuCalendar } from "https://esm.town/v/tal/buildDoeMenuCalendar";
import { doeMenuResponseStore } from "https://esm.town/v/tal/doeMenuResponseStore";
import { ensureDataForKey } from "https://esm.town/v/tal/ensureDataForKey";
import { dateCalendarKey } from "https://esm.town/v/tal/dateCalendarKey";
import { currentDateValues } from "https://esm.town/v/tal/currentDateValues";
export async function doeMenuCalendar(req: Request) {
const url = new URL(req.url);
const menuType = url.pathname.substring(1);
const today = currentDateValues();
const key = dateCalendarKey({
...today,
menuType,
});
await ensureDataForKey({
...today,
menuType,
});
const storeValue = doeMenuResponseStore[key];
if (!storeValue) {
return new Response(`not found for key ${key}`);
}
const context = {
menuType,
};
const calendar = await buildDoeMenuCalendar(
context as any,
storeValue,
);
const body = calendar.toString();
return new Response(body, {
headers: {
"Content-Type": "text/calendar",
},
});
}
๐Ÿ‘† This is a val. Vals are TypeScript snippets of code, written in the browser and run on our servers. Create scheduled functions, email yourself, and persist small pieces of data โ€” all from the browser.