57 lines
2.4 KiB
TypeScript
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);
|
|
} |