anycable-core 1.2.2 → 1.2.3

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: 231e6b2d9faf7e35f2362e174c1440791268238e872a4c454b64e164deefd612
4
- data.tar.gz: 3f915b4c9c40b0b0b6b611051aa34d1ad5868fbd2aff7738b372d35ed0fe89ee
3
+ metadata.gz: 3ae8ddced1365e350a744545ed12da6e42fffbaa3f58d40b0f9d83598077a88a
4
+ data.tar.gz: 6637778d168c99c19a760a635455496ee121dfbbe0fd2472a3a29c4311ce3f7d
5
5
  SHA512:
6
- metadata.gz: 2f4abf1cc380e9228b5928498474bcd045d0f50719f9ddc9d522f7b17946ae4d8488259dda27982770327e26674f75ec4ca2d406fe248f7c6320c9e6f01a6662
7
- data.tar.gz: 134d88ea2c47c69240823dc8f75f184f65ac036a41b618479b039b76e985c9cdc0905bf723294d6255b243e0989e4d455e4fb5bd545557536be90bead542e944
6
+ metadata.gz: 3446218216fc8c7b76a0ddd249a8976afe8f9ddf83cdd4714bc29a94a2037caa066c5cae02bcb4a8109fd64555f80b871a4c718d059ec6382e814e9b7cc11ff0
7
+ data.tar.gz: 3711df758ce8d1963f158371f5c80a06757ffd3b392acf28cbec79652abe6d61e821800ddd6f2054310d2082a651263bcbe56bfb56a5af11dfc1bbdbe40044e8
data/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## 1.2.3 (2022-04-20)
6
+
7
+ - Pass unique connection id (_session id_) in the `anycable.sid` Rack env field. ([@palkan][])
8
+
5
9
  ## 1.2.2 (2022-03-04)
6
10
 
7
11
  - Allow Ruby 2.6.
data/lib/anycable/cli.rb CHANGED
@@ -65,6 +65,8 @@ module AnyCable
65
65
 
66
66
  check_version!
67
67
 
68
+ configure_middleware!
69
+
68
70
  @server = AnyCable.server_builder.call(config)
69
71
 
70
72
  # Make sure middlewares are not adding after server has started
@@ -265,6 +267,12 @@ module AnyCable
265
267
  )
266
268
  end
267
269
 
270
+ def configure_middleware!
271
+ if config.sid_header_enabled?
272
+ AnyCable.middleware.use(AnyCable::Middlewares::EnvSid)
273
+ end
274
+ end
275
+
268
276
  def parse_gem_options!(args)
269
277
  config.parse_options!(args)
270
278
  rescue OptionParser::InvalidOption => e
@@ -43,7 +43,8 @@ module AnyCable
43
43
  http_health_path: "/health",
44
44
 
45
45
  ### Misc options
46
- version_check_enabled: true
46
+ version_check_enabled: true,
47
+ sid_header_enabled: true
47
48
  )
48
49
 
49
50
  if respond_to?(:coerce_types)
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AnyCable
4
+ module Middlewares
5
+ # Set sid for request.env from metadata
6
+ class EnvSid < AnyCable::Middleware
7
+ def call(_method, request, meta)
8
+ return yield unless meta["sid"]
9
+ request.env.sid = meta["sid"]
10
+
11
+ yield
12
+ end
13
+ end
14
+ end
15
+ end
data/lib/anycable/rpc.rb CHANGED
@@ -88,4 +88,11 @@ module AnyCable
88
88
  class DisconnectResponse
89
89
  include StatusPredicates
90
90
  end
91
+
92
+ # TODO: Move sid to env in the future version of RPC proto
93
+ unless Env.instance_methods(false).include?(:sid)
94
+ class Env
95
+ attr_accessor :sid
96
+ end
97
+ end
91
98
  end
@@ -129,7 +129,8 @@ module AnyCable
129
129
  "rack.url_scheme" => uri.scheme&.sub(/^ws/, "http"),
130
130
  # AnyCable specific fields
131
131
  "anycable.raw_cstate" => request_env.cstate&.to_h,
132
- "anycable.raw_istate" => request_env.istate&.to_h
132
+ "anycable.raw_istate" => request_env.istate&.to_h,
133
+ "anycable.sid" => request_env.sid
133
134
  }.delete_if { |_k, v| v.nil? })
134
135
 
135
136
  env.merge!(build_headers(headers))
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AnyCable
4
- VERSION = "1.2.2"
4
+ VERSION = "1.2.3"
5
5
  end
data/lib/anycable.rb CHANGED
@@ -10,6 +10,7 @@ require "anycable/broadcast_adapters"
10
10
  require "anycable/middleware_chain"
11
11
  require "anycable/middlewares/exceptions"
12
12
  require "anycable/middlewares/check_version"
13
+ require "anycable/middlewares/env_sid"
13
14
 
14
15
  require "anycable/socket"
15
16
  require "anycable/rpc"
@@ -0,0 +1,6 @@
1
+ module AnyCable
2
+ module Middlewares
3
+ class EnvSid < AnyCable::Middleware
4
+ end
5
+ end
6
+ end
data/sig/anycable/rpc.rbs CHANGED
@@ -24,6 +24,7 @@ module AnyCable
24
24
 
25
25
  attr_accessor url: String
26
26
  attr_accessor headers: protoMap
27
+ attr_accessor sid: String?
27
28
 
28
29
  def initialize: (?url: String, ?headers: protoMap, ?cstate: protoMap?, ?istate: protoMap?) -> void
29
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anycable-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - palkan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-04 00:00:00.000000000 Z
11
+ date: 2022-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: anyway_config
@@ -170,6 +170,7 @@ files:
170
170
  - lib/anycable/middleware.rb
171
171
  - lib/anycable/middleware_chain.rb
172
172
  - lib/anycable/middlewares/check_version.rb
173
+ - lib/anycable/middlewares/env_sid.rb
173
174
  - lib/anycable/middlewares/exceptions.rb
174
175
  - lib/anycable/protos/rpc_pb.rb
175
176
  - lib/anycable/rpc.rb
@@ -197,6 +198,7 @@ files:
197
198
  - sig/anycable/middleware.rbs
198
199
  - sig/anycable/middleware_chain.rbs
199
200
  - sig/anycable/middlewares/check_version.rbs
201
+ - sig/anycable/middlewares/env_sid.rbs
200
202
  - sig/anycable/middlewares/exceptions.rbs
201
203
  - sig/anycable/rpc.rbs
202
204
  - sig/anycable/rpc/handler.rbs
@@ -230,7 +232,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
230
232
  - !ruby/object:Gem::Version
231
233
  version: '0'
232
234
  requirements: []
233
- rubygems_version: 3.2.22
235
+ rubygems_version: 3.3.7
234
236
  signing_key:
235
237
  specification_version: 4
236
238
  summary: AnyCable core RPC implementation