Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / cookie / index.js
1 /*!\r
2  * cookie\r
3  * Copyright(c) 2012-2014 Roman Shtylman\r
4  * MIT Licensed\r
5  */\r
6 \r
7 /**\r
8  * Module exports.\r
9  * @public\r
10  */\r
11 \r
12 exports.parse = parse;\r
13 exports.serialize = serialize;\r
14 \r
15 /**\r
16  * Module variables.\r
17  * @private\r
18  */\r
19 \r
20 var decode = decodeURIComponent;\r
21 var encode = encodeURIComponent;\r
22 \r
23 /**\r
24  * Parse a cookie header.\r
25  *\r
26  * Parse the given cookie header string into an object\r
27  * The object has the various cookies as keys(names) => values\r
28  *\r
29  * @param {string} str\r
30  * @param {object} [options]\r
31  * @return {string}\r
32  * @public\r
33  */\r
34 \r
35 function parse(str, options) {\r
36   var obj = {}\r
37   var opt = options || {};\r
38   var pairs = str.split(/; */);\r
39   var dec = opt.decode || decode;\r
40 \r
41   pairs.forEach(function(pair) {\r
42     var eq_idx = pair.indexOf('=')\r
43 \r
44     // skip things that don't look like key=value\r
45     if (eq_idx < 0) {\r
46       return;\r
47     }\r
48 \r
49     var key = pair.substr(0, eq_idx).trim()\r
50     var val = pair.substr(++eq_idx, pair.length).trim();\r
51 \r
52     // quoted values\r
53     if ('"' == val[0]) {\r
54       val = val.slice(1, -1);\r
55     }\r
56 \r
57     // only assign once\r
58     if (undefined == obj[key]) {\r
59       obj[key] = tryDecode(val, dec);\r
60     }\r
61   });\r
62 \r
63   return obj;\r
64 }\r
65 \r
66 /**\r
67  * Serialize data into a cookie header.\r
68  *\r
69  * Serialize the a name value pair into a cookie string suitable for\r
70  * http headers. An optional options object specified cookie parameters.\r
71  *\r
72  * serialize('foo', 'bar', { httpOnly: true })\r
73  *   => "foo=bar; httpOnly"\r
74  *\r
75  * @param {string} name\r
76  * @param {string} val\r
77  * @param {object} [options]\r
78  * @return {string}\r
79  * @public\r
80  */\r
81 \r
82 function serialize(name, val, options) {\r
83   var opt = options || {};\r
84   var enc = opt.encode || encode;\r
85   var pairs = [name + '=' + enc(val)];\r
86 \r
87   if (null != opt.maxAge) {\r
88     var maxAge = opt.maxAge - 0;\r
89     if (isNaN(maxAge)) throw new Error('maxAge should be a Number');\r
90     pairs.push('Max-Age=' + maxAge);\r
91   }\r
92 \r
93   if (opt.domain) pairs.push('Domain=' + opt.domain);\r
94   if (opt.path) pairs.push('Path=' + opt.path);\r
95   if (opt.expires) pairs.push('Expires=' + opt.expires.toUTCString());\r
96   if (opt.httpOnly) pairs.push('HttpOnly');\r
97   if (opt.secure) pairs.push('Secure');\r
98 \r
99   return pairs.join('; ');\r
100 }\r
101 \r
102 /**\r
103  * Try decoding a string using a decoding function.\r
104  *\r
105  * @param {string} str\r
106  * @param {function} decode\r
107  * @private\r
108  */\r
109 \r
110 function tryDecode(str, decode) {\r
111   try {\r
112     return decode(str);\r
113   } catch (e) {\r
114     return str;\r
115   }\r
116 }\r