ruflet_server 0.0.12 → 0.0.13

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: 2f7f6af6a5f50b057d32c477999140b9fad6bd8e60c94b552daebee6baf69acc
4
- data.tar.gz: 7520f899e68da6be32c2a4534ab2abb61514820f2ed9c4df457322c16a5940c4
3
+ metadata.gz: 25450e49973d445cda961a273eda6c37aa2e1245865f4094e9c61a6df5dcfdbb
4
+ data.tar.gz: 607f67ac69a68360e657133f1f674f09ea917cdf53a2fe86bcf685e1022786ac
5
5
  SHA512:
6
- metadata.gz: c6d38619ee9efd5b35bc1c41b55b47740027e59bb9b95d3884c1d38f74079d7bcbb996e33d6240b05b2a3325cc971186bb458e89d47752fdd507358e78921d75
7
- data.tar.gz: 1e40e525abb2f0b87a4bd30d4ff63134e932bc659f59f839cd2200fde74cfbb8a243bcb3d8653fec62bb9624d4906b5991d0766724eb3efd622fab2b0d9d1228
6
+ metadata.gz: f4f7c79eda7eeafe780e39e16a90f1196e8f729e802374885f2b283ca7e9f5759f7431747fccd8435ea8d60b8424d19d284c97550cfb1d1f96a952d76c467e63
7
+ data.tar.gz: d659f02495e1d47b9d9272327de7c42788287e0e269b245e2da511a4a7ae5124a7ac1bebf9566292c67567cc7af807beffd28fad84e3693f49dd0248f2ef316c
@@ -16,7 +16,7 @@ module Ruflet
16
16
  when Float
17
17
  "\xcb".b + [value].pack("G")
18
18
  when String
19
- pack_string(value)
19
+ binary_string?(value) ? pack_binary(value) : pack_string(value)
20
20
  when Symbol
21
21
  pack_string(value.to_s)
22
22
  when Array
@@ -69,6 +69,23 @@ module Ruflet
69
69
  end
70
70
  end
71
71
 
72
+ def pack_binary(value)
73
+ bytes = value.to_s.b
74
+ len = bytes.bytesize
75
+
76
+ if len <= 0xff
77
+ "\xc4".b + [len].pack("C") + bytes
78
+ elsif len <= 0xffff
79
+ "\xc5".b + [len].pack("n") + bytes
80
+ else
81
+ "\xc6".b + [len].pack("N") + bytes
82
+ end
83
+ end
84
+
85
+ def binary_string?(value)
86
+ value.encoding == Encoding::BINARY || !value.valid_encoding?
87
+ end
88
+
72
89
  def pack_array(value)
73
90
  len = value.length
74
91
  head =
@@ -178,8 +195,17 @@ module Ruflet
178
195
  end
179
196
 
180
197
  def read_ext(reader, size)
181
- reader.read_i8 # type (ignored)
182
- reader.read_exact(size)
198
+ type = reader.read_i8
199
+ data = reader.read_exact(size)
200
+
201
+ case type
202
+ when 1, 2, 4
203
+ data.dup.force_encoding("UTF-8")
204
+ when 3
205
+ data.to_i
206
+ else
207
+ data
208
+ end
183
209
  end
184
210
  end
185
211
 
data/lib/ruflet/server.rb CHANGED
@@ -480,7 +480,7 @@ module Ruflet
480
480
 
481
481
  def on_invoke_control_method(ws, payload)
482
482
  page = fetch_page(ws)
483
- page.handle_invoke_method_result(payload)
483
+ page.handle_invoke_method_result(Protocol.normalize_invoke_method_result_payload(payload))
484
484
  end
485
485
 
486
486
  def on_control_event(ws, payload)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ruflet
4
- VERSION = "0.0.12" unless const_defined?(:VERSION)
4
+ VERSION = "0.0.13" unless const_defined?(:VERSION)
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruflet_server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - AdamMusa
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.0.12
18
+ version: 0.0.13
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 0.0.12
25
+ version: 0.0.13
26
26
  description: Ruflet WebSocket server runtime compatible with Flet protocol.
27
27
  email:
28
28
  - adammusa2222@gmail.com