status-go/jail/internal/fetch/js/headers.js

63 lines
1.3 KiB
JavaScript

export default class Headers {
_headers = {};
constructor(init) {
if (init instanceof Headers) {
init = init._headers;
}
if (typeof init === 'object' && init !== null) {
for (var k in init) {
var v = init[k];
if (!Array.isArray(v)) {
v = [v];
}
v.forEach(e => this.append(k, e));
}
}
}
append(name, value) {
const normalisedName = Headers.normaliseName(name);
if (!Object.hasOwnProperty.call(this._headers, normalisedName)) {
this._headers[normalisedName] = [];
}
this._headers[normalisedName].push(value);
}
delete(name) {
delete this._headers[Headers.normaliseName(name)];
}
get(name) {
const normalisedName = Headers.normaliseName(name);
if (this._headers[normalisedName]) {
return this._headers[normalisedName][0];
}
}
getAll(name) {
return this._headers[Headers.normaliseName(name)] || [];
}
has(name) {
const normalisedName = Headers.normaliseName(name);
return Array.isArray(this._headers[normalisedName]);
}
set(name, value) {
const normalisedName = Headers.normaliseName(name);
this._headers[normalisedName] = [value];
}
static normaliseName(name) {
return name.toLowerCase();
}
}