Class: Browser::Cookies
- Includes:
- Enumerable
- Defined in:
- opal/browser/cookies.rb
Overview
Allows manipulation of browser cookies.
Usage:
cookies = Browser::Cookies.new(document
)
cookies["my-cookie"] = "monster"
cookies.delete("my-cookie")
Constant Summary collapse
- DEFAULT =
Default cookie options.
{ expires: Time.now + 60 * 60 * 24, secure: false }
Instance Attribute Summary collapse
-
#keys ⇒ Array<String>
readonly
All the cookie names.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#values ⇒ Array
readonly
All the cookie values.
Instance Method Summary collapse
-
#[](name) ⇒ Object
Access the cookie with the given name.
-
#[]=(name, value, options = {}) ⇒ Object
Set a cookie.
-
#clear ⇒ self
Delete all the cookies.
-
#delete(name) ⇒ Object
Delete a cookie.
-
#each {|key, value| ... } ⇒ self
Enumerate the cookies.
-
#initialize(document) ⇒ Cookies
constructor
Create a new Cookies wrapper.
Constructor Details
#initialize(document) ⇒ Cookies
Create a new Browser::Cookies wrapper.
29 30 31 32 |
# File 'opal/browser/cookies.rb', line 29 def initialize(document) @document = document @options = DEFAULT.dup end |
Instance Attribute Details
#keys ⇒ Array<String> (readonly)
Returns all the cookie names.
77 78 79 80 81 |
# File 'opal/browser/cookies.rb', line 77 def keys Array(`#@document.cookie.split(/; /)`).map {|| .split(/\s*=\s*/).first } end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
24 25 26 |
# File 'opal/browser/cookies.rb', line 24 def @options end |
#values ⇒ Array (readonly)
Returns all the cookie values.
85 86 87 88 89 |
# File 'opal/browser/cookies.rb', line 85 def values keys.map {|key| self[key] } end |
Instance Method Details
#[](name) ⇒ Object
Access the cookie with the given name.
39 40 41 42 43 44 45 46 47 48 49 |
# File 'opal/browser/cookies.rb', line 39 def [](name) matches = `#@document.cookie`.scan(/#{Regexp.escape(FormData.encode(name))}=([^;]*)/) return if matches.empty? result = matches.flatten.map {|value| JSON.parse(FormData.decode(value)) } result.length == 1 ? result.first : result end |
#[]=(name, value, options = {}) ⇒ Object
Set a cookie.
62 63 64 65 66 |
# File 'opal/browser/cookies.rb', line 62 def []=(name, value, = {}) string = value.is_a?(String) ? value : JSON.dump(value) encoded_value = encode(name, string, @options.merge()) `#@document.cookie = #{encoded_value}` end |
#clear ⇒ self
Delete all the cookies
110 111 112 113 114 115 116 |
# File 'opal/browser/cookies.rb', line 110 def clear keys.each {|key| delete key } self end |
#delete(name) ⇒ Object
Delete a cookie.
71 72 73 |
# File 'opal/browser/cookies.rb', line 71 def delete(name) `#@document.cookie = #{encode name, '', expires: Time.now}` end |
#each {|key, value| ... } ⇒ self
Enumerate the cookies.
97 98 99 100 101 102 103 104 105 |
# File 'opal/browser/cookies.rb', line 97 def each(&block) return enum_for :each unless block keys.each {|key| yield key, self[key] } self end |