Class: Dommy::CookieStore
- Inherits:
-
Object
- Object
- Dommy::CookieStore
show all
- Includes:
- EventTarget
- Defined in:
- lib/dommy/cookie_store.rb
Overview
‘cookieStore` — the asynchronous Cookie Store API. Reads and writes go through the existing `Document#cookie_jar`, so values set via `document.cookie = …` round-trip via `cookieStore.get`.
Spec: wicg.github.io/cookie-store/
Instance Method Summary
collapse
#__deliver_event__, #add_event_listener, #dispatch_event, #invoke_listener, #remove_event_listener
Constructor Details
Returns a new instance of CookieStore.
12
13
14
|
# File 'lib/dommy/cookie_store.rb', line 12
def initialize(window)
@window = window
end
|
Instance Method Details
#__event_parent__ ⇒ Object
82
83
84
|
# File 'lib/dommy/cookie_store.rb', line 82
def __event_parent__
nil
end
|
#__js_call__(method, args) ⇒ Object
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/dommy/cookie_store.rb', line 63
def __js_call__(method, args)
case method
when "get"
get(args[0])
when "getAll"
get_all(args[0])
when "set"
set(args[0], args[1])
when "delete"
delete(args[0])
when "addEventListener"
add_event_listener(args[0], args[1], args[2])
when "removeEventListener"
remove_event_listener(args[0], args[1])
when "dispatchEvent"
dispatch_event(args[0])
end
end
|
#delete(name_or_options) ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/dommy/cookie_store.rb', line 50
def delete(name_or_options)
name = name_or_options.is_a?(Hash) ? (name_or_options["name"] || name_or_options[:name]) : name_or_options
cookie_jar.cookies.delete(name.to_s)
dispatch_event(
CookieChangeEvent.new(
"change",
"changed" => [],
"deleted" => [build_record(name.to_s, "")]
)
)
PromiseValue.resolve(@window, nil)
end
|
#get(name_or_options) ⇒ Object
16
17
18
19
20
|
# File 'lib/dommy/cookie_store.rb', line 16
def get(name_or_options)
name = name_or_options.is_a?(Hash) ? (name_or_options["name"] || name_or_options[:name]) : name_or_options
raw = cookie_jar.cookies[name.to_s]
raw ? PromiseValue.resolve(@window, build_record(name.to_s, raw)) : PromiseValue.resolve(@window, nil)
end
|
#get_all(name = nil) ⇒ Object
Also known as:
getAll
22
23
24
25
26
|
# File 'lib/dommy/cookie_store.rb', line 22
def get_all(name = nil)
records = cookie_jar.cookies.map { |k, v| build_record(k, v) }
records = records.select { |r| r["name"] == name.to_s } if name
PromiseValue.resolve(@window, records)
end
|
#set(name_or_options, value = nil) ⇒ Object
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/dommy/cookie_store.rb', line 30
def set(name_or_options, value = nil)
if name_or_options.is_a?(Hash)
opts = name_or_options.transform_keys(&:to_s)
name = opts["name"]
value = opts["value"]
else
name = name_or_options
end
cookie_jar.set_cookie("#{name}=#{value}")
dispatch_event(
CookieChangeEvent.new(
"change",
"changed" => [build_record(name.to_s, value.to_s)],
"deleted" => []
)
)
PromiseValue.resolve(@window, nil)
end
|