From 98349a58f68e0ffe8a0de301ddfce05a0ead3874 Mon Sep 17 00:00:00 2001 From: Ed Hager Date: Fri, 15 Mar 2019 09:58:13 -0700 Subject: [PATCH] Modify Headers to include an accessor that returns all of the headers at once. --- src/lib/request.ts | 16 ++++++++++++++-- tests/unit/lib/request.ts | 15 +++++++++++++-- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/lib/request.ts b/src/lib/request.ts index d803ede..cfaab76 100644 --- a/src/lib/request.ts +++ b/src/lib/request.ts @@ -47,6 +47,7 @@ export interface ProgressEvent { } export interface Headers { + all: { [key: string]: string }; get(key: string): string; } @@ -140,12 +141,23 @@ export default function request( } class HeadersClass { - private data: any; + private data: { [key: string]: string }; - constructor(headers: any) { + constructor(headers: { [key: string]: string }) { this.data = headers; } + get all() { + const { data } = this; + return Object.keys(data).reduce( + (headers: { [key: string]: string }, key) => { + headers[key.toLowerCase()] = data[key]; + return headers; + }, + {} + ); + } + get(key: string) { return String(this.data[key.toLowerCase()]); } diff --git a/tests/unit/lib/request.ts b/tests/unit/lib/request.ts index 5af0ece..0c39433 100644 --- a/tests/unit/lib/request.ts +++ b/tests/unit/lib/request.ts @@ -1,5 +1,5 @@ import * as moxios from 'moxios'; -import request from '../../../src/lib/request'; +import request, { Response } from '../../../src/lib/request'; const { registerSuite } = intern.getInterface('object'); const { assert } = intern.getPlugin('chai'); @@ -26,7 +26,8 @@ registerSuite('lib/request', { statusText: 'OK', response: 'foo', headers: { - 'Content-Type': 'text/plain' + 'Content-Type': 'text/plain', + 'A-Test-Header': 'Some Value' } }); }) @@ -53,6 +54,16 @@ registerSuite('lib/request', { 'text/plain', 'Unexpected content type' ); + assert.equal( + response.headers.all['content-type'], + 'text/plain', + 'Unexpected content type for content-type' + ); + assert.equal( + response.headers.all['a-test-header'], + 'Some Value', + 'Unexpected content type for a-test-header' + ); return response.text(); }) )