summaryrefslogtreecommitdiff
path: root/headers.ts
blob: 9fe2181950ce111f27e324158ad94cfdbef2986b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Fake headers to work around
// https://github.com/denoland/deno/issues/1173

function normalize(name: string, value?: string): [string, string] {
  name = String(name).toLowerCase();
  value = String(value).trim();
  return [name, value];
}

export class Headers {
  private map = new Map<string, string>();

  get(name: string): string | null {
    let [name_] = normalize(name);
    return this.map.get(name_);
  }

  append(name: string, value: string): void {
    [name, value] = normalize(name, value);
    this.map.set(name, value);
  }

  toString(): string {
    let out = "";
    this.map.forEach((v, k) => {
      out += `${k}: ${v}\n`;
    });
    return out;
  }

  [Symbol.iterator](): IterableIterator<[string, string]> {
    return this.map[Symbol.iterator]();
  }
}