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