Skip to content
File

Blob: src/worker/run-logs/auth.ts

typescript32 lines
1import { RunId, UserId } from "@/contracts";
2 
3const INTERNAL_RUN_LOG_AUTH_VALUE = "anvil-run-logs-v1";
4 
5export const INTERNAL_RUN_LOG_AUTH_HEADER = "x-anvil-run-log-auth";
6export const INTERNAL_RUN_LOG_RUN_ID_HEADER = "x-anvil-run-log-run-id";
7export const INTERNAL_RUN_LOG_USER_ID_HEADER = "x-anvil-run-log-user-id";
8 
9export const createInternalRunLogHeaders = (baseHeaders: HeadersInit, runId: RunId, userId: UserId): Headers => {
10 const headers = new Headers(baseHeaders);
11 headers.set(INTERNAL_RUN_LOG_AUTH_HEADER, INTERNAL_RUN_LOG_AUTH_VALUE);
12 headers.set(INTERNAL_RUN_LOG_RUN_ID_HEADER, runId);
13 headers.set(INTERNAL_RUN_LOG_USER_ID_HEADER, userId);
14 
15 return headers;
16};
17 
18export const readInternalRunLogAuth = (request: Request): { runId: RunId; userId: UserId } | null => {
19 if (request.headers.get(INTERNAL_RUN_LOG_AUTH_HEADER) !== INTERNAL_RUN_LOG_AUTH_VALUE) {
20 return null;
21 }
22 
23 try {
24 return {
25 runId: RunId.assertDecode(request.headers.get(INTERNAL_RUN_LOG_RUN_ID_HEADER)),
26 userId: UserId.assertDecode(request.headers.get(INTERNAL_RUN_LOG_USER_ID_HEADER)),
27 };
28 } catch {
29 return null;
30 }
31};