summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/caseless/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/caseless/index.js')
-rw-r--r--deps/npm/node_modules/caseless/index.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/deps/npm/node_modules/caseless/index.js b/deps/npm/node_modules/caseless/index.js
new file mode 100644
index 0000000000..b194734ee4
--- /dev/null
+++ b/deps/npm/node_modules/caseless/index.js
@@ -0,0 +1,67 @@
+function Caseless (dict) {
+ this.dict = dict || {}
+}
+Caseless.prototype.set = function (name, value, clobber) {
+ if (typeof name === 'object') {
+ for (var i in name) {
+ this.set(i, name[i], value)
+ }
+ } else {
+ if (typeof clobber === 'undefined') clobber = true
+ var has = this.has(name)
+
+ if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value
+ else this.dict[has || name] = value
+ return has
+ }
+}
+Caseless.prototype.has = function (name) {
+ var keys = Object.keys(this.dict)
+ , name = name.toLowerCase()
+ ;
+ for (var i=0;i<keys.length;i++) {
+ if (keys[i].toLowerCase() === name) return keys[i]
+ }
+ return false
+}
+Caseless.prototype.get = function (name) {
+ name = name.toLowerCase()
+ var result, _key
+ var headers = this.dict
+ Object.keys(headers).forEach(function (key) {
+ _key = key.toLowerCase()
+ if (name === _key) result = headers[key]
+ })
+ return result
+}
+Caseless.prototype.swap = function (name) {
+ var has = this.has(name)
+ if (has === name) return
+ if (!has) throw new Error('There is no header than matches "'+name+'"')
+ this.dict[name] = this.dict[has]
+ delete this.dict[has]
+}
+Caseless.prototype.del = function (name) {
+ var has = this.has(name)
+ return delete this.dict[has || name]
+}
+
+module.exports = function (dict) {return new Caseless(dict)}
+module.exports.httpify = function (resp, headers) {
+ var c = new Caseless(headers)
+ resp.setHeader = function (key, value, clobber) {
+ if (typeof value === 'undefined') return
+ return c.set(key, value, clobber)
+ }
+ resp.hasHeader = function (key) {
+ return c.has(key)
+ }
+ resp.getHeader = function (key) {
+ return c.get(key)
+ }
+ resp.removeHeader = function (key) {
+ return c.del(key)
+ }
+ resp.headers = c.dict
+ return c
+}