1 function Caseless (dict
) {
4 Caseless
.prototype.set = function (name
, value
, clobber
) {
5 if (typeof name
=== 'object') {
7 this.set(i
, name
[i
], value
)
10 if (typeof clobber
=== 'undefined') clobber
= true
11 var has
= this.has(name
)
13 if (!clobber
&& has
) this.dict
[has
] = this.dict
[has
] + ',' + value
14 else this.dict
[has
|| name
] = value
18 Caseless
.prototype.has = function (name
) {
19 var keys
= Object
.keys(this.dict
)
20 , name
= name
.toLowerCase()
22 for (var i
=0;i
<keys
.length
;i
++) {
23 if (keys
[i
].toLowerCase() === name
) return keys
[i
]
27 Caseless
.prototype.get = function (name
) {
28 name
= name
.toLowerCase()
30 var headers
= this.dict
31 Object
.keys(headers
).forEach(function (key
) {
32 _key
= key
.toLowerCase()
33 if (name
=== _key
) result
= headers
[key
]
37 Caseless
.prototype.swap = function (name
) {
38 var has
= this.has(name
)
39 if (!has
) throw new Error('There is no header than matches "'+name
+'"')
40 this.dict
[name
] = this.dict
[has
]
43 Caseless
.prototype.del = function (name
) {
44 var has
= this.has(name
)
45 return delete this.dict
[has
|| name
]
48 module
.exports = function (dict
) {return new Caseless(dict
)}
49 module
.exports
.httpify = function (resp
, headers
) {
50 var c
= new Caseless(headers
)
51 resp
.setHeader = function (key
, value
, clobber
) {
52 if (typeof value
=== 'undefined') return
53 return c
.set(key
, value
, clobber
)
55 resp
.hasHeader = function (key
) {
58 resp
.getHeader = function (key
) {
61 resp
.removeHeader = function (key
) {