Drop Headers class in favor of a Map object

This patch removes Header class and substitutes it with a simple
Map object.

The map is chosen over the vanilla object since it has explicit
order of headers which we'd like to preserve.

References #106.
This commit is contained in:
Andrey Lushnikov
2017-07-27 09:35:44 -07:00
parent 585f815548
commit 480547955c
2 changed files with 8 additions and 144 deletions

View File

@@ -136,91 +136,6 @@ class NetworkManager extends EventEmitter {
}
}
class Headers {
/**
* @param {?Object} payload
* @return {!Headers}
*/
static fromPayload(payload) {
let headers = new Headers();
if (!payload)
return headers;
for (let key in payload)
headers.set(key, payload[key]);
return headers;
}
constructor() {
/** @type {!Map<string, string>} */
this._headers = new Map();
}
/**
* @param {string} name
* @param {string} value
*/
append(name, value) {
name = name.toLowerCase();
this._headers.set(name, value);
}
/**
* @param {string} name
*/
delete(name) {
name = name.toLowerCase();
this._headers.delete(name);
}
/**
* @return {!Iterator}
*/
entries() {
return this._headers.entries();
}
/**
* @param {string} name
* @return {?string}
*/
get(name) {
name = name.toLowerCase();
return this._headers.get(name);
}
/**
* @param {string} name
* @return {boolean}
*/
has(name) {
name = name.toLowerCase();
return this._headers.has(name);
}
/**
* @return {!Iterator}
*/
keys() {
return this._headers.keys();
}
/**
* @return {!Iterator}
*/
values() {
return this._headers.values();
}
/**
* @param {string} name
* @param {string} value
*/
set(name, value) {
name = name.toLowerCase();
this._headers.set(name, value);
}
}
class Body {
/**
* @param {function():!Promise<!Buffer>} contentCallback
@@ -282,7 +197,7 @@ class Request extends Body {
this._response = null;
this.url = payload.url;
this.method = payload.method;
this.headers = Headers.fromPayload(payload.headers);
this.headers = new Map(Object.entries(payload.headers));
}
/**
@@ -303,7 +218,7 @@ class Response extends Body {
constructor(request, payload, contentCallback) {
super(contentCallback);
this._request = request;
this.headers = Headers.fromPayload(payload.headers);
this.headers = new Map(Object.entries(payload.headers));
this.ok = payload.status >= 200 && payload.status <= 299;
this.status = payload.status;
this.statusText = payload.statusText;
@@ -332,7 +247,7 @@ class InterceptedRequest {
this.url = payload.url;
this.method = payload.method;
this.headers = Headers.fromPayload(payload.headers);
this.headers = new Map(Object.entries(payload.headers));
this.postData = payload.postData;
}