anycable-core 1.2.2 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
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