I think HeaderMap is a good idea (if nothing else, because it's clearly not a 
map, but instead a multimap).

That said, in terms of what is accepted, it would make sense to define 
conversion algorithms for both iterables-of-key-value-pairs (the duck-type 
version of Maps) and, for convenience in the 80% case, object literals. 
Expressing the semantics in JS (which, as always, is a better way of doing 
things than WebIDL or prose):

```js
function acceptsHeaderMapish(thing) {
  const headerMap = new HeaderMap();
  if (thing instanceof HeaderMap /* or more specific brand check */) {
    headerMap = thing;
  } else {
    const iterator = thing[Symbol.iterator];
    if (iterator) {
      for (let [key, value] of iterator) {
        headerMap.add(key, value);
      }
    } else if (typeof thing === "object") {
      for (let key of Object.keys(thing)) {
        headerMap.add(key, thing[key]);
      }
    } else {
      throw new TypeError("Must pass an iterable or an object when a 
header-map-like is expected");
    }
  }

  // can use headerMap now
}
```

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of 
Anne van Kesteren
Sent: Friday, June 6, 2014 17:31
To: Jonas Sicking
Cc: Domenic Denicola; public-script-coord; Joshua Bell; Jungkee Song; Yehuda 
Katz; Alex Russell; Jake Archibald; Tobie Langel; WebApps WG
Subject: Re: Fetch API

On Fri, Jun 6, 2014 at 10:26 AM, Jonas Sicking <[email protected]> wrote:
> I'm still arguing that we shouldn't have a HeaderMap class at all, and 
> instead just use normal Map objects. And in places where we take a map 
> as an argument, also allow plain JS objects that are then enumerated.

You have not explained how that would work however. Adding headers might have 
to change the mode of the request. We cannot allow all headers. A Map does not 
even map to how HTTP headers work. As discussed in 
https://github.com/slightlyoff/ServiceWorker/issues/300
headers are a list where you can have duplicate names and ordering is sometimes 
significant.


--
http://annevankesteren.nl/

Reply via email to