176: def set_cookie_header!(header, key, value)
177: case value
178: when Hash
179: domain = "; domain=" + value[:domain] if value[:domain]
180: path = "; path=" + value[:path] if value[:path]
181:
182:
183: expires = "; expires=" +
184: rfc2822(value[:expires].clone.gmtime) if value[:expires]
185: secure = "; secure" if value[:secure]
186: httponly = "; HttpOnly" if value[:httponly]
187: value = value[:value]
188: end
189: value = [value] unless Array === value
190: cookie = escape(key) + "=" +
191: value.map { |v| escape v }.join("&") +
192: "#{domain}#{path}#{expires}#{secure}#{httponly}"
193:
194: case header["Set-Cookie"]
195: when nil, ''
196: header["Set-Cookie"] = cookie
197: when String
198: header["Set-Cookie"] = [header["Set-Cookie"], cookie].join("\n")
199: when Array
200: header["Set-Cookie"] = (header["Set-Cookie"] + [cookie]).join("\n")
201: end
202:
203: nil
204: end