Class | Merb::Cookies |
In: |
merb-core/lib/merb-core/dispatch/cookies.rb
|
Parent: | Mash |
:api: private
# File merb-core/lib/merb-core/dispatch/cookies.rb, line 6 6: def initialize(constructor = {}) 7: @_options_lookup = Mash.new 8: @_cookie_defaults = { "domain" => Merb::Controller._default_cookie_domain, "path" => '/' } 9: super constructor 10: end
Implicit assignment of cookie key and value.
name<~to_s>: | Name of the cookie. |
value<~to_s>: | Value of the cookie. |
By using this method, a cookie key is marked for being included in the Set-Cookie response header.
:api: public
# File merb-core/lib/merb-core/dispatch/cookies.rb, line 23 23: def []=(key, value) 24: @_options_lookup[key] ||= {} 25: super 26: end
Removes the cookie on the client machine by setting the value to an empty string and setting its expiration date into the past.
name<~to_s>: | Name of the cookie to delete. |
options<Hash>: | Additional options to pass to set_cookie. |
:api: public
# File merb-core/lib/merb-core/dispatch/cookies.rb, line 59 59: def delete(name, options = {}) 60: set_cookie(name, "", options.merge("expires" => Time.at(0))) 61: end
Generate any necessary headers.
Hash: | The headers to set, or an empty array if no cookies are set. |
:api: private
# File merb-core/lib/merb-core/dispatch/cookies.rb, line 69 69: def extract_headers(controller_defaults = {}) 70: defaults = @_cookie_defaults.merge(controller_defaults) 71: cookies = [] 72: self.each do |name, value| 73: # Only set cookies that marked for inclusion in the response header. 74: next unless @_options_lookup[name] 75: options = defaults.merge(@_options_lookup[name]) 76: if (expiry = options["expires"]).respond_to?(:gmtime) 77: options["expires"] = expiry.gmtime.strftime(Merb::Const::COOKIE_EXPIRATION_FORMAT) 78: end 79: secure = options.delete("secure") 80: kookie = "#{name}=#{Merb::Parse.escape(value)}; " 81: # WebKit in particular doens't like empty cookie options - skip them. 82: options.each { |k, v| kookie << "#{k}=#{v}; " unless v.blank? } 83: kookie << 'secure' if secure 84: cookies << kookie.rstrip 85: end 86: cookies.empty? ? {} : { 'Set-Cookie' => cookies } 87: end
Explicit assignment of cookie key, value and options
name<~to_s>: | Name of the cookie. |
value<~to_s>: | Value of the cookie. |
options<Hash>: | Additional options for the cookie (see below). |
:path<String>: | The path for which this cookie applies. Defaults to "/". |
:expires<Time>: | Cookie expiry date. |
:domain<String>: | The domain for which this cookie applies. |
:secure<Boolean>: | Security flag. |
By using this method, a cookie key is marked for being included in the Set-Cookie response header.
:api: private
# File merb-core/lib/merb-core/dispatch/cookies.rb, line 46 46: def set_cookie(name, value, options = {}) 47: @_options_lookup[name] = options 48: self[name] = value 49: end