Skip to content
File

Blob: src/worker/dav/etag.ts

typescript21 lines
1import { randomHex } from "@/worker/auth/bytes";
2 
3export function generateEtag(): string {
4 return `"${randomHex(16)}"`;
5}
6 
7export function strongEtagMatches(headerValue: string, etag: string | null): boolean {
8 if (!etag) return false;
9 return headerValue
10 .split(",")
11 .map((part) => part.trim())
12 .some((part) => part === etag || part === "*");
13}
14 
15export function ifNoneMatchBlocks(headerValue: string, etag: string | null): boolean {
16 return headerValue
17 .split(",")
18 .map((part) => part.trim())
19 .some((part) => part === "*" || (etag !== null && part === etag));
20}