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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8ac570f3b6d92f8fc6d21723cc2814c658861c20e8b38d884e389185916d559f
4
- data.tar.gz: 02cbfbdc2da5e487af2cd07b2d176066c6a5cd0487a141245ffc84ca0a23ff3f
3
+ metadata.gz: 91f92e0fef72cbb500ba43ac12d81590bac485bb9cf4642c93563aab2736811f
4
+ data.tar.gz: 609e6b2720465ca414898482223d561d264ddca837d717e07a2b54c1f874df6f
5
5
  SHA512:
6
- metadata.gz: de4d8d0a43bda6f2ebbab447c8c25209d44cfabccae8fb584024a355cf1ba464577200737d3cfae692d2e2c52aca294ae13d556de95875dd07d8a407b5a1c8d3
7
- data.tar.gz: 1b3a8dd5f338a32c9e91f30a1b0d85cd9618019b2903f931cd27de45cee4717830daeabc44dc6dff01daf9dcf1e503a7bfacff7f8f7f813e4efb06ca6dbb9b02
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
- nil
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
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ruflet
4
- VERSION = "0.0.6" unless const_defined?(:VERSION)
4
+ VERSION = "0.0.7" unless const_defined?(:VERSION)
5
5
  end
data/lib/ruflet_rails.rb CHANGED
@@ -1,8 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- local_ruflet_lib = File.expand_path("../../ruflet/lib", __dir__)
4
- if File.directory?(local_ruflet_lib) && !$LOAD_PATH.include?(local_ruflet_lib)
5
- $LOAD_PATH.unshift(local_ruflet_lib)
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.6
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.11
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.11
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: