ruflet_rails 0.0.6 → 0.0.7
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/ruflet/rails/protocol/local_server.rb +6 -1
- data/lib/ruflet/rails/protocol/wire_codec.rb +29 -3
- data/lib/ruflet/version.rb +1 -1
- data/lib/ruflet_rails.rb +5 -3
- metadata +17 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 91f92e0fef72cbb500ba43ac12d81590bac485bb9cf4642c93563aab2736811f
|
|
4
|
+
data.tar.gz: 609e6b2720465ca414898482223d561d264ddca837d717e07a2b54c1f874df6f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1f9e56edf7b86fccf776d7bfc8ee630ce501f42fde7854a9bb4f660a31ef85dfbe0e1a50ebe7a5c09dfe307e80eb88ca561a77d69777006a00810c34770dbba5
|
|
7
|
+
data.tar.gz: 23792bdae076841ddc0ed099475a25ab4bfd0240a244e90a0d71eb3d011c11c8e67e5610102bf8475a86e35dae2ea2aac6c8f58d1b75c1a8bf23ddf9682da60e
|
|
@@ -50,7 +50,7 @@ module Ruflet
|
|
|
50
50
|
when Ruflet::Protocol::ACTIONS[:update_control], Ruflet::Protocol::ACTIONS[:update_control_props]
|
|
51
51
|
on_update_control(ws, payload)
|
|
52
52
|
when Ruflet::Protocol::ACTIONS[:invoke_control_method]
|
|
53
|
-
|
|
53
|
+
on_invoke_control_method(ws, payload)
|
|
54
54
|
else
|
|
55
55
|
raise "Unknown action: #{action.inspect}"
|
|
56
56
|
end
|
|
@@ -144,6 +144,11 @@ module Ruflet
|
|
|
144
144
|
page.apply_client_update(update["id"], update["props"] || {})
|
|
145
145
|
end
|
|
146
146
|
|
|
147
|
+
def on_invoke_control_method(ws, payload)
|
|
148
|
+
page = fetch_page(ws)
|
|
149
|
+
page.handle_invoke_method_result(Ruflet::Protocol.normalize_invoke_method_result_payload(payload))
|
|
150
|
+
end
|
|
151
|
+
|
|
147
152
|
def fetch_page(ws)
|
|
148
153
|
page = @sessions_mutex.synchronize { @sessions[ws.session_key] }
|
|
149
154
|
raise "Session not found" unless page
|
|
@@ -18,7 +18,7 @@ module Ruflet
|
|
|
18
18
|
when Float
|
|
19
19
|
"\xcb".b + [value].pack("G")
|
|
20
20
|
when String
|
|
21
|
-
pack_string(value)
|
|
21
|
+
binary_string?(value) ? pack_binary(value) : pack_string(value)
|
|
22
22
|
when Symbol
|
|
23
23
|
pack_string(value.to_s)
|
|
24
24
|
when Array
|
|
@@ -71,6 +71,23 @@ module Ruflet
|
|
|
71
71
|
end
|
|
72
72
|
end
|
|
73
73
|
|
|
74
|
+
def pack_binary(value)
|
|
75
|
+
bytes = value.to_s.b
|
|
76
|
+
len = bytes.bytesize
|
|
77
|
+
|
|
78
|
+
if len <= 0xff
|
|
79
|
+
"\xc4".b + [len].pack("C") + bytes
|
|
80
|
+
elsif len <= 0xffff
|
|
81
|
+
"\xc5".b + [len].pack("n") + bytes
|
|
82
|
+
else
|
|
83
|
+
"\xc6".b + [len].pack("N") + bytes
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def binary_string?(value)
|
|
88
|
+
value.encoding == Encoding::BINARY || !value.valid_encoding?
|
|
89
|
+
end
|
|
90
|
+
|
|
74
91
|
def pack_array(value)
|
|
75
92
|
len = value.length
|
|
76
93
|
head =
|
|
@@ -180,8 +197,17 @@ module Ruflet
|
|
|
180
197
|
end
|
|
181
198
|
|
|
182
199
|
def read_ext(reader, size)
|
|
183
|
-
reader.read_i8
|
|
184
|
-
reader.read_exact(size)
|
|
200
|
+
type = reader.read_i8
|
|
201
|
+
data = reader.read_exact(size)
|
|
202
|
+
|
|
203
|
+
case type
|
|
204
|
+
when 1, 2, 4
|
|
205
|
+
data.dup.force_encoding("UTF-8")
|
|
206
|
+
when 3
|
|
207
|
+
data.to_i
|
|
208
|
+
else
|
|
209
|
+
data
|
|
210
|
+
end
|
|
185
211
|
end
|
|
186
212
|
end
|
|
187
213
|
|
data/lib/ruflet/version.rb
CHANGED
data/lib/ruflet_rails.rb
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
%w[ruflet_core ruflet].reverse_each do |package|
|
|
4
|
+
local_package_lib = File.expand_path("../../#{package}/lib", __dir__)
|
|
5
|
+
if File.directory?(local_package_lib) && !$LOAD_PATH.include?(local_package_lib)
|
|
6
|
+
$LOAD_PATH.unshift(local_package_lib)
|
|
7
|
+
end
|
|
6
8
|
end
|
|
7
9
|
|
|
8
10
|
require "ruflet_core"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ruflet_rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- AdamMusa
|
|
@@ -23,20 +23,34 @@ dependencies:
|
|
|
23
23
|
- - ">="
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
25
|
version: '7.0'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: ruflet
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: 0.0.13
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - ">="
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: 0.0.13
|
|
26
40
|
- !ruby/object:Gem::Dependency
|
|
27
41
|
name: ruflet_core
|
|
28
42
|
requirement: !ruby/object:Gem::Requirement
|
|
29
43
|
requirements:
|
|
30
44
|
- - ">="
|
|
31
45
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 0.0.
|
|
46
|
+
version: 0.0.13
|
|
33
47
|
type: :runtime
|
|
34
48
|
prerelease: false
|
|
35
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
50
|
requirements:
|
|
37
51
|
- - ">="
|
|
38
52
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: 0.0.
|
|
53
|
+
version: 0.0.13
|
|
40
54
|
description: Rails-first integration package for mounting Ruflet mobile apps in Rails
|
|
41
55
|
routes.
|
|
42
56
|
email:
|