Skip to content
This repository has been archived by the owner on Mar 20, 2023. It is now read-only.

httpland/http-etag

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

etag

HTTP ETag utilities for standard Request and Response.

Usage

Add etag field to HTTP Response header. Or, check the etag and return the appropriate 304 HTTP response.

The ETag is computed from a hash of the Response body.

For the sake of immutability, we guarantee that the argument will not be modified.

import { withEtag } from "https://deno.land/x/http_etag@$VERSION/mod.ts";
import { assertEquals } from "https://deno.land/std/testing/asserts.ts";

const taggedResponse = await withEtag(
  new Request("http://localhost"),
  new Response("ok"),
);

assertEquals(taggedResponse.headers.get("etag"), "<body:FNV32:hash>");

Supported algorithms

You can change the algorithm from the algorithm filed.

import { withEtag } from "https://deno.land/x/http_etag@$VERSION/mod.ts";
import { assertEquals } from "https://deno.land/std/testing/asserts.ts";

const taggedResponse = await withEtag(
  new Request("http://localhost"),
  new Response("ok"),
  { algorithm: "SHA-1" },
);

assertEquals(taggedResponse.headers.get("etag"), "<body:SHA-1:hash>");

The following algorithms are supported built-in.

  • BLAKE2B
  • BLAKE2B-256
  • BLAKE2B-384
  • BLAKE2S
  • BLAKE3
  • KECCAK-224
  • KECCAK-256
  • KECCAK-384
  • KECCAK-512
  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512
  • SHA3-224
  • SHA3-256
  • SHA3-384
  • SHA3-512
  • SHAKE128
  • SHAKE256
  • TIGER
  • RIPEMD-160
  • MD4
  • MD5
  • FNV32(Default)
  • FNV32A
  • FNV64
  • FNV64A

License

Copyright © 2023-present httpland.

Released under the MIT license