Files
advent-of-code-2021-firebase/functions/src/index.ts
2021-12-10 19:54:41 +01:00

57 lines
2.4 KiB
TypeScript

import * as functions from "firebase-functions";
import {Request, Response} from "firebase-functions";
import Utils from "./utils";
import Day from "./day";
import Day1 from "./day1";
import Day2 from "./day2";
import Day3 from "./day3";
import Day4 from "./day4";
import Day5 from "./day5";
import Day6 from "./day6";
import Day7 from "./day7";
import Day8 from "./day8";
import Day9 from "./day9";
import Day10 from "./day10";
// // Start writing Firebase Functions
// // https://firebase.google.com/docs/functions/typescript
//
// export const helloWorld = functions.https.onRequest((request, response) => {
// functions.logger.info("Hello logs!", {structuredData: true});
// response.send("Hello from Firebase!");
// });
interface DayResult {
part1: string | number;
part2: string | number;
}
export const day = {
1: functions.region("europe-west1").https.onRequest((request, response) => { processDay(new Day1(), request, response) }),
2: functions.region("europe-west1").https.onRequest((request, response) => { processDay(new Day2(), request, response) }),
3: functions.region("europe-west1").https.onRequest((request, response) => { processDay(new Day3(), request, response) }),
4: functions.region("europe-west1").https.onRequest((request, response) => { processDay(new Day4(), request, response) }),
5: functions.region("europe-west1").https.onRequest((request, response) => { processDay(new Day5(), request, response) }),
6: functions.region("europe-west1").https.onRequest((request, response) => { processDay(new Day6(), request, response) }),
7: functions.region("europe-west1").https.onRequest((request, response) => { processDay(new Day7(), request, response) }),
8: functions.region("europe-west1").https.onRequest((request, response) => { processDay(new Day8(), request, response) }),
9: functions.region("europe-west1").https.onRequest((request, response) => { processDay(new Day9(), request, response) }),
10: functions.region("europe-west1").https.onRequest((request, response) => { processDay(new Day10(), request, response) }),
}
function processDay(day: Day, request: Request, response: Response) {
const input = Utils.parseInput(request);
const part1 = day.part1(input);
const part2 = day.part2(input);
sendResponse(response, part1, part2);
}
function sendResponse(response: Response, part1: string | number, part2: string | number) {
const res: DayResult = { part1, part2 };
response.send(res);
}