bowser 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/bowser/version.rb +1 -1
- data/opal/bowser/element.rb +5 -0
- data/opal/bowser/file_list.rb +41 -11
- data/opal/bowser/http.rb +31 -9
- data/opal/bowser/http/form_data.rb +19 -0
- data/opal/bowser/http/request.rb +15 -33
- data/opal/bowser/window.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30eccdfa1a9fdd25efe66a4e7b69f9ef0dff07d4
|
4
|
+
data.tar.gz: d4e62c0377fbd2f1d690d010d93eef4aa2c13de1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f353bd279771bf383e9233b15211ed4f780f7082287ccb3e49920f7bdae95f205163ba6746526b5c63406a51c9f56fefb23709e180308852cc9935e9ea571ba
|
7
|
+
data.tar.gz: 626063d6efea1c1fd45b4d642192d56f40d0c1a7029ce782aae41c12084d45ba152576833841e126a8b23b0c813a7852d49ece7bb552df0c8717ad43e8e8be8d
|
data/lib/bowser/version.rb
CHANGED
data/opal/bowser/element.rb
CHANGED
data/opal/bowser/file_list.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'bowser/event_target'
|
1
2
|
require 'promise'
|
2
3
|
|
3
4
|
module Bowser
|
@@ -6,12 +7,13 @@ module Bowser
|
|
6
7
|
|
7
8
|
def initialize native
|
8
9
|
@native = `#{native} || []`
|
10
|
+
@files = length.times.each_with_object([]) { |index, array|
|
11
|
+
array[index] = File.new(`#@native[index]`)
|
12
|
+
}
|
9
13
|
end
|
10
14
|
|
11
15
|
def [] index
|
12
|
-
|
13
|
-
File.new(`#@native[index]`)
|
14
|
-
end
|
16
|
+
@files[index]
|
15
17
|
end
|
16
18
|
|
17
19
|
def length
|
@@ -20,19 +22,26 @@ module Bowser
|
|
20
22
|
alias size length
|
21
23
|
|
22
24
|
def each &block
|
23
|
-
|
24
|
-
block.call
|
25
|
+
@files.each do |file|
|
26
|
+
block.call file
|
25
27
|
end
|
26
28
|
end
|
27
29
|
|
28
30
|
def to_a
|
29
|
-
|
31
|
+
@files.dup # Don't return a value that can mutate our internal state
|
30
32
|
end
|
31
33
|
alias to_ary to_a
|
32
34
|
|
35
|
+
def to_s
|
36
|
+
@files.to_s
|
37
|
+
end
|
38
|
+
|
33
39
|
class File
|
40
|
+
attr_reader :data
|
41
|
+
|
34
42
|
def initialize native
|
35
43
|
@native = native
|
44
|
+
@data = nil
|
36
45
|
end
|
37
46
|
|
38
47
|
def name
|
@@ -53,17 +62,38 @@ module Bowser
|
|
53
62
|
|
54
63
|
def read
|
55
64
|
promise = Promise.new
|
56
|
-
reader =
|
57
|
-
reader
|
58
|
-
|
65
|
+
reader = FileReader.new
|
66
|
+
reader.on :load do
|
67
|
+
result = reader.result
|
68
|
+
|
69
|
+
@data = result
|
70
|
+
promise.resolve result
|
59
71
|
end
|
60
|
-
|
72
|
+
|
73
|
+
reader.on :error do
|
61
74
|
promise.reject reader.result
|
62
75
|
end
|
63
|
-
|
76
|
+
|
77
|
+
reader.read_as_binary_string self
|
64
78
|
|
65
79
|
promise
|
66
80
|
end
|
81
|
+
|
82
|
+
class FileReader
|
83
|
+
include EventTarget
|
84
|
+
|
85
|
+
def initialize
|
86
|
+
@native = `new FileReader()`
|
87
|
+
end
|
88
|
+
|
89
|
+
def result
|
90
|
+
`#@native.result`
|
91
|
+
end
|
92
|
+
|
93
|
+
def read_as_binary_string file
|
94
|
+
`#@native.readAsBinaryString(file.native)`
|
95
|
+
end
|
96
|
+
end
|
67
97
|
end
|
68
98
|
end
|
69
99
|
end
|
data/opal/bowser/http.rb
CHANGED
@@ -2,6 +2,7 @@ require 'native'
|
|
2
2
|
require 'promise'
|
3
3
|
|
4
4
|
require 'bowser/http/request'
|
5
|
+
require 'bowser/http/form_data'
|
5
6
|
|
6
7
|
module Bowser
|
7
8
|
module HTTP
|
@@ -11,12 +12,8 @@ module Bowser
|
|
11
12
|
promise = Promise.new
|
12
13
|
request = Request.new(:get, url)
|
13
14
|
|
14
|
-
request
|
15
|
-
|
16
|
-
end
|
17
|
-
request.on :error do |event|
|
18
|
-
promise.reject Native(event)
|
19
|
-
end
|
15
|
+
connect_events_to_promise request, promise
|
16
|
+
|
20
17
|
request.send
|
21
18
|
|
22
19
|
promise
|
@@ -26,15 +23,40 @@ module Bowser
|
|
26
23
|
promise = Promise.new
|
27
24
|
request = Request.new(:post, url)
|
28
25
|
|
26
|
+
connect_events_to_promise request, promise
|
27
|
+
|
28
|
+
request.send(data: data, headers: { 'Content-Type' => content_type })
|
29
|
+
|
30
|
+
promise
|
31
|
+
end
|
32
|
+
|
33
|
+
def upload_files(url, files, key: 'files', key_suffix: '[]')
|
34
|
+
promise = Promise.new
|
35
|
+
request = Request.new(:post, url)
|
36
|
+
|
37
|
+
connect_events_to_promise request, promise
|
38
|
+
|
39
|
+
form = FormData.new
|
40
|
+
files.each do |file|
|
41
|
+
form.append "#{key}#{key_suffix}", file
|
42
|
+
end
|
43
|
+
|
44
|
+
request.send(data: form)
|
45
|
+
|
46
|
+
promise
|
47
|
+
end
|
48
|
+
|
49
|
+
def upload_file(url, file, key: 'file')
|
50
|
+
upload_files(url, [file], key: key, key_suffix: nil)
|
51
|
+
end
|
52
|
+
|
53
|
+
def connect_events_to_promise(request, promise)
|
29
54
|
request.on :success do
|
30
55
|
promise.resolve request.response
|
31
56
|
end
|
32
57
|
request.on :error do |event|
|
33
58
|
promise.reject Native(event)
|
34
59
|
end
|
35
|
-
request.send(data: data, headers: { 'Content-Type' => content_type })
|
36
|
-
|
37
|
-
promise
|
38
60
|
end
|
39
61
|
end
|
40
62
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Bowser
|
2
|
+
module HTTP
|
3
|
+
class FormData
|
4
|
+
def initialize
|
5
|
+
@native = `new FormData()`
|
6
|
+
end
|
7
|
+
|
8
|
+
def append key, value
|
9
|
+
data = if `!!value.native`
|
10
|
+
`value.native`
|
11
|
+
else
|
12
|
+
value
|
13
|
+
end
|
14
|
+
|
15
|
+
`#@native.append(key, data)`
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/opal/bowser/http/request.rb
CHANGED
@@ -4,6 +4,8 @@ require 'bowser/http/event'
|
|
4
4
|
module Bowser
|
5
5
|
module HTTP
|
6
6
|
class Request
|
7
|
+
include EventTarget
|
8
|
+
|
7
9
|
attr_reader :method, :url, :data, :headers, :promise
|
8
10
|
attr_accessor :response
|
9
11
|
|
@@ -17,52 +19,32 @@ module Bowser
|
|
17
19
|
@native = native
|
18
20
|
@method = method
|
19
21
|
@url = url
|
20
|
-
|
21
|
-
@ready_state_callbacks = []
|
22
|
-
%x{
|
23
|
-
#@native.onreadystatechange = #{
|
24
|
-
proc do |event|
|
25
|
-
@ready_state_callbacks.each do |callback|
|
26
|
-
callback.call event
|
27
|
-
end
|
28
|
-
end
|
29
|
-
}
|
30
|
-
}
|
31
|
-
|
32
22
|
@response = Response.new(@native)
|
33
23
|
end
|
34
24
|
|
35
|
-
def
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
}
|
25
|
+
def send(data: {}, headers: {})
|
26
|
+
`#@native.open(#{method}, #{url})`
|
27
|
+
@data = data
|
28
|
+
self.headers = headers
|
29
|
+
|
30
|
+
if method == :get || method == :delete
|
31
|
+
`#@native.send()`
|
32
|
+
elsif Hash === data
|
33
|
+
`#@native.send(#{JSON.generate data})`
|
34
|
+
elsif `!!data.native`
|
35
|
+
`#@native.send(data.native)`
|
44
36
|
else
|
45
|
-
|
46
|
-
`object.addEventListener(event_name, handler)`
|
37
|
+
`#@native.send(data)`
|
47
38
|
end
|
48
39
|
|
49
40
|
self
|
50
41
|
end
|
51
42
|
|
52
|
-
def
|
53
|
-
`#@native.open(#{method}, #{url})`
|
54
|
-
@data = data
|
43
|
+
def headers= headers
|
55
44
|
@headers = headers
|
56
45
|
headers.each do |attr, value|
|
57
46
|
`#@native.setRequestHeader(attr, value)`
|
58
47
|
end
|
59
|
-
if method == :get || method == :delete
|
60
|
-
`#@native.send()`
|
61
|
-
else
|
62
|
-
`#@native.send(#{JSON.generate data})`
|
63
|
-
end
|
64
|
-
|
65
|
-
self
|
66
48
|
end
|
67
49
|
|
68
50
|
def post?
|
data/opal/bowser/window.rb
CHANGED
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: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie Gaskins
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opal
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- opal/bowser/file_list.rb
|
101
101
|
- opal/bowser/http.rb
|
102
102
|
- opal/bowser/http/event.rb
|
103
|
+
- opal/bowser/http/form_data.rb
|
103
104
|
- opal/bowser/http/request.rb
|
104
105
|
- opal/bowser/http/response.rb
|
105
106
|
- opal/bowser/websocket.rb
|