bowser 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8f53f24efe36fd9a16441cc3a47d0d842d365223a3a7a96f9236346bf92378a5
4
- data.tar.gz: 701ab252671234c052d4c3ea69b6dfadb5e830e21dec5016ba8711ee06941848
3
+ metadata.gz: 1c64ab47af4f205533b6862c356ac7683ec67ce9a366db661f3d102a19643d34
4
+ data.tar.gz: fe09c481650814b17004454f177967d6a505436620489d567a0e300e202c38d0
5
5
  SHA512:
6
- metadata.gz: cb8bec025144f5e66a2d1a2d4779631823f7eb84e25546a9a10230da5d840744240120ffcc56919cf6b0cef73ac3e833e7bdace629cc8b785123c46e2afa5f2f
7
- data.tar.gz: 1357dd5e1facd10aafb5e844504be9a7fcffc47e7018d18e59e1f2ce7b1d4b6ffa2a4317fc817ef9ced838f7d27ef75137e5c893eafaae0049501f7613afd2cc
6
+ metadata.gz: 27f6bc8021abd354453e9bd302fc9c1b69245cdae5a9343209181e9f7ad0f5fcf3a7bffeaddc76d4e79e4cd9b52af5cbd764350f30d1c6d24a1f7c890e22ed2d
7
+ data.tar.gz: 5a1e2bc54f127ea0878617cb2a553c6d39bd8826746f320c164f1bd653326caac3f5e37adc04f3259ab15c9ae7ea35487b13a0931efd95f4f5e4ef87993271dc
@@ -1,3 +1,3 @@
1
1
  module Bowser
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -0,0 +1,61 @@
1
+ module Bowser
2
+ class Cookie
3
+ def self.all
4
+ native
5
+ .split(';')
6
+ .map { |cookie| from_native(cookie) }
7
+ end
8
+
9
+ def self.[] key
10
+ all.find { |cookie| cookie.key == key }
11
+ end
12
+
13
+ def self.delete key
14
+ `document.cookie = #{"#{key}=; expires=#{`#{Time.now}.toUTCString()`}"}`
15
+ nil
16
+ end
17
+
18
+ def self.from_native string
19
+ new *string.split('=', 2)
20
+ end
21
+
22
+ def self.native
23
+ `document.cookie`
24
+ end
25
+
26
+ def self.set **attrs
27
+ attrs.map do |key, value|
28
+ new(key, value).set
29
+ end
30
+ end
31
+
32
+ attr_reader :key, :value
33
+
34
+ def initialize key, value, **options
35
+ @key = key.strip
36
+ @value = value
37
+ @options = options
38
+ end
39
+
40
+ def delete
41
+ `document.cookie = "#@key=; expires=0"`
42
+ nil
43
+ end
44
+
45
+ def set
46
+ options = @options.map do |opt, value|
47
+ "; #{opt}=#{
48
+ case value
49
+ when Date
50
+ `#{value}.toUTCString()`
51
+ else
52
+ value
53
+ end
54
+ }"
55
+ end
56
+
57
+ `document.cookie = #{"#@key=#@value#{options.join}"}`
58
+ self
59
+ end
60
+ end
61
+ end
@@ -128,15 +128,15 @@ module Bowser
128
128
  p
129
129
  end
130
130
 
131
- def get_all klass, count: nil, index: nil
131
+ def get_all klass, count: nil, index: nil, &block
132
+ if index
133
+ return index(index).get_all(klass, count: count, &block)
134
+ end
135
+
132
136
  Promise.new do |p|
133
137
  query = block_given? ? yield(Query.new) : `undefined`
134
138
 
135
- request = if index
136
- index(index).get_all(klass, count: count)
137
- else
138
- Request.new(`#@native.getAll(#{query}, #{count || `undefined`})`)
139
- end
139
+ request = Request.new(`#@native.getAll(#{query}, #{count || `undefined`})`)
140
140
  request.on :success do |event|
141
141
  p.resolve event.target.result.map { |js_obj|
142
142
  `delete #{js_obj}.$$id` # Remove old Ruby runtime metadata
@@ -201,6 +201,33 @@ module Bowser
201
201
 
202
202
  p
203
203
  end
204
+
205
+ def cursor klass, direction: :next, count: `undefined`
206
+ query = block_given? ? (yield Query.new) : `undefined`
207
+
208
+ Promise.new do |p|
209
+ results = []
210
+ req = `#@native.openCursor(#{query}, #{direction})`
211
+ index = 0
212
+
213
+ %x{
214
+ req.onsuccess = #{proc { |event|
215
+ cursor = `event.target.result`
216
+ if `#{cursor}`
217
+ js_obj = `#{cursor}.value`
218
+ `delete #{js_obj}.$$id` # Remove old Ruby runtime metadata
219
+
220
+ value = `Object.assign(#{klass.allocate}, #{js_obj})`
221
+ `results.push(value)`
222
+ `(!(count < index++)) ? #{cursor}.continue() : #{p.resolve results}`
223
+ else
224
+ p.resolve results
225
+ end
226
+ }};
227
+ req.onerror = #{proc { |e| p.reject e }};
228
+ }
229
+ end
230
+ end
204
231
  end
205
232
 
206
233
  class Query
@@ -64,6 +64,8 @@ module Bowser
64
64
  #
65
65
  # @param reason [String, nil] the reason this socket is being closed
66
66
  def close reason=`undefined`
67
+ @autoreconnect = false
68
+ @handlers = {}
67
69
  `#@native.close(reason)`
68
70
  end
69
71
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bowser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamie Gaskins
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-07-08 00:00:00.000000000 Z
11
+ date: 2018-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -108,6 +108,7 @@ files:
108
108
  - lib/bowser.rb
109
109
  - lib/bowser/version.rb
110
110
  - opal/bowser.rb
111
+ - opal/bowser/cookie.rb
111
112
  - opal/bowser/delegate_native.rb
112
113
  - opal/bowser/document.rb
113
114
  - opal/bowser/element.rb