wampproto 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +39 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/LICENSE +22 -0
- data/README.md +35 -0
- data/Rakefile +12 -0
- data/Steepfile +33 -0
- data/lib/wampproto/acceptor/authenticator.rb +14 -0
- data/lib/wampproto/acceptor/request.rb +58 -0
- data/lib/wampproto/acceptor/response.rb +19 -0
- data/lib/wampproto/acceptor.rb +183 -0
- data/lib/wampproto/auth/anonymous.rb +14 -0
- data/lib/wampproto/auth/base.rb +20 -0
- data/lib/wampproto/auth/cra.rb +84 -0
- data/lib/wampproto/auth/cryptosign.rb +86 -0
- data/lib/wampproto/auth/helpers.rb +25 -0
- data/lib/wampproto/auth/ticket.rb +27 -0
- data/lib/wampproto/auth.rb +14 -0
- data/lib/wampproto/broker.rb +155 -0
- data/lib/wampproto/dealer.rb +143 -0
- data/lib/wampproto/id_generator.rb +23 -0
- data/lib/wampproto/joiner.rb +78 -0
- data/lib/wampproto/message/abort.rb +32 -0
- data/lib/wampproto/message/authenticate.rb +25 -0
- data/lib/wampproto/message/base.rb +30 -0
- data/lib/wampproto/message/call.rb +33 -0
- data/lib/wampproto/message/challenge.rb +25 -0
- data/lib/wampproto/message/error.rb +27 -0
- data/lib/wampproto/message/event.rb +33 -0
- data/lib/wampproto/message/goodbye.rb +25 -0
- data/lib/wampproto/message/hello.rb +64 -0
- data/lib/wampproto/message/invocation.rb +33 -0
- data/lib/wampproto/message/publish.rb +33 -0
- data/lib/wampproto/message/published.rb +25 -0
- data/lib/wampproto/message/register.rb +26 -0
- data/lib/wampproto/message/registered.rb +25 -0
- data/lib/wampproto/message/result.rb +32 -0
- data/lib/wampproto/message/subscribe.rb +26 -0
- data/lib/wampproto/message/subscribed.rb +25 -0
- data/lib/wampproto/message/unregister.rb +25 -0
- data/lib/wampproto/message/unregistered.rb +24 -0
- data/lib/wampproto/message/unsubscribe.rb +25 -0
- data/lib/wampproto/message/unsubscribed.rb +24 -0
- data/lib/wampproto/message/welcome.rb +41 -0
- data/lib/wampproto/message/yield.rb +32 -0
- data/lib/wampproto/message.rb +108 -0
- data/lib/wampproto/message_with_recipient.rb +13 -0
- data/lib/wampproto/serializer/cbor.rb +18 -0
- data/lib/wampproto/serializer/json.rb +18 -0
- data/lib/wampproto/serializer/msgpack.rb +18 -0
- data/lib/wampproto/serializer.rb +5 -0
- data/lib/wampproto/session.rb +144 -0
- data/lib/wampproto/session_details.rb +24 -0
- data/lib/wampproto/validate.rb +52 -0
- data/lib/wampproto/version.rb +5 -0
- data/lib/wampproto.rb +32 -0
- data/sig/cbor.rbs +5 -0
- data/sig/ed25519/signing_key.rbs +7 -0
- data/sig/ed25519/verify_key.rbs +7 -0
- data/sig/message_pack.rbs +5 -0
- data/sig/wampproto/acceptor/authenticator.rbs +9 -0
- data/sig/wampproto/acceptor/request.rbs +46 -0
- data/sig/wampproto/acceptor/response.rbs +25 -0
- data/sig/wampproto/acceptor.rbs +86 -0
- data/sig/wampproto/auth/anonymous.rbs +13 -0
- data/sig/wampproto/auth/base.rbs +25 -0
- data/sig/wampproto/auth/cra.rbs +34 -0
- data/sig/wampproto/auth/cryptosign.rbs +38 -0
- data/sig/wampproto/auth/helpers.rbs +16 -0
- data/sig/wampproto/auth/ticket.rbs +21 -0
- data/sig/wampproto/broker.rbs +48 -0
- data/sig/wampproto/dealer.rbs +49 -0
- data/sig/wampproto/id_generator.rbs +17 -0
- data/sig/wampproto/joiner.rbs +43 -0
- data/sig/wampproto/message/abort.rbs +31 -0
- data/sig/wampproto/message/authenticate.rbs +20 -0
- data/sig/wampproto/message/base.rbs +14 -0
- data/sig/wampproto/message/call.rbs +34 -0
- data/sig/wampproto/message/challenge.rbs +20 -0
- data/sig/wampproto/message/error.rbs +28 -0
- data/sig/wampproto/message/event.rbs +34 -0
- data/sig/wampproto/message/goodbye.rbs +21 -0
- data/sig/wampproto/message/hello.rbs +39 -0
- data/sig/wampproto/message/invocation.rbs +34 -0
- data/sig/wampproto/message/publish.rbs +32 -0
- data/sig/wampproto/message/published.rbs +20 -0
- data/sig/wampproto/message/register.rbs +24 -0
- data/sig/wampproto/message/registered.rbs +20 -0
- data/sig/wampproto/message/result.rbs +32 -0
- data/sig/wampproto/message/subscribe.rbs +24 -0
- data/sig/wampproto/message/subscribed.rbs +20 -0
- data/sig/wampproto/message/unregister.rbs +20 -0
- data/sig/wampproto/message/unregistered.rbs +16 -0
- data/sig/wampproto/message/unsubscribe.rbs +20 -0
- data/sig/wampproto/message/unsubscribed.rbs +16 -0
- data/sig/wampproto/message/welcome.rbs +36 -0
- data/sig/wampproto/message/yield.rbs +30 -0
- data/sig/wampproto/message.rbs +59 -0
- data/sig/wampproto/message_with_recipient.rbs +15 -0
- data/sig/wampproto/serializer/cbor.rbs +10 -0
- data/sig/wampproto/serializer/json.rbs +11 -0
- data/sig/wampproto/serializer/msgpack.rbs +11 -0
- data/sig/wampproto/session.rbs +43 -0
- data/sig/wampproto/session_details.rbs +25 -0
- data/sig/wampproto/validate.rbs +18 -0
- data/sig/wampproto.rbs +17 -0
- data/wampproto.gemspec +39 -0
- metadata +196 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# Wamp Challenge message
|
6
|
+
class Challenge < Base
|
7
|
+
attr_reader :auth_method, :extra
|
8
|
+
|
9
|
+
def initialize(auth_method, extra = {})
|
10
|
+
super()
|
11
|
+
@auth_method = Validate.string!("AuthMethod", auth_method)
|
12
|
+
@extra = Validate.hash!("Extra", extra)
|
13
|
+
end
|
14
|
+
|
15
|
+
def marshal
|
16
|
+
[Type::CHALLENGE, auth_method, extra]
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.parse(wamp_message)
|
20
|
+
_type, auth_method, extra = wamp_message
|
21
|
+
new(auth_method, extra)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# abort message
|
6
|
+
class Error < Base
|
7
|
+
attr_reader :message_type, :request_id, :details, :error
|
8
|
+
|
9
|
+
def initialize(message_type, request_id, details, error)
|
10
|
+
super()
|
11
|
+
@message_type = Validate.int!("Message Type", message_type)
|
12
|
+
@request_id = Validate.int!("Request Id", request_id)
|
13
|
+
@details = Validate.hash!("Details", details)
|
14
|
+
@error = Validate.string!("Error", error)
|
15
|
+
end
|
16
|
+
|
17
|
+
def marshal
|
18
|
+
[Type::ERROR, message_type, request_id, details, error]
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.parse(wamp_message)
|
22
|
+
_type, message_type, request_id, details, error = Validate.length!(wamp_message, 5)
|
23
|
+
new(message_type, request_id, details, error)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# event message
|
6
|
+
class Event < Base
|
7
|
+
attr_reader :subscription_id, :publication_id, :details, :args, :kwargs
|
8
|
+
|
9
|
+
def initialize(subscription_id, publication_id, details, *args, **kwargs)
|
10
|
+
super()
|
11
|
+
@subscription_id = Validate.int!("Subscription Id", subscription_id)
|
12
|
+
@publication_id = Validate.int!("Publication Id", publication_id)
|
13
|
+
@details = Validate.hash!("details", details)
|
14
|
+
@args = Validate.array!("Arguments", args)
|
15
|
+
@kwargs = Validate.hash!("Keyword Arguments", kwargs)
|
16
|
+
end
|
17
|
+
|
18
|
+
def marshal
|
19
|
+
@payload = [Type::EVENT, subscription_id, publication_id, details]
|
20
|
+
@payload << args if kwargs.any? || args.any?
|
21
|
+
@payload << kwargs if kwargs.any?
|
22
|
+
@payload
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.parse(wamp_message)
|
26
|
+
_type, subscription_id, publication_id, details, args, kwargs = wamp_message
|
27
|
+
args ||= []
|
28
|
+
kwargs ||= {}
|
29
|
+
new(subscription_id, publication_id, details, *args, **kwargs)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# abort message
|
6
|
+
class Goodbye < Base
|
7
|
+
attr_reader :details, :reason
|
8
|
+
|
9
|
+
def initialize(details, reason)
|
10
|
+
super()
|
11
|
+
@details = Validate.hash!("Details", details)
|
12
|
+
@reason = Validate.string!("Reason", reason)
|
13
|
+
end
|
14
|
+
|
15
|
+
def marshal
|
16
|
+
[Type::GOODBYE, details, reason]
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.parse(wamp_message)
|
20
|
+
_type, details, reason = Validate.greater_than_equal!(wamp_message, 3)
|
21
|
+
new(details, reason)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# Wamp Hello message
|
6
|
+
class Hello < Base
|
7
|
+
attr_reader :realm, :details
|
8
|
+
|
9
|
+
def initialize(realm, details = {})
|
10
|
+
super()
|
11
|
+
@realm = Validate.string!("Realm", realm)
|
12
|
+
@details = default_details.merge(parse_details(Validate.hash!("Details", details))).merge(additional_details)
|
13
|
+
end
|
14
|
+
|
15
|
+
def marshal
|
16
|
+
[Type::HELLO, @realm, @details]
|
17
|
+
end
|
18
|
+
|
19
|
+
def parse_details(hsh = {})
|
20
|
+
details = {}
|
21
|
+
details[:roles] = hsh.fetch(:roles, default_roles)
|
22
|
+
details[:authid] = hsh.fetch(:authid, nil)
|
23
|
+
details[:authmethods] = [*hsh.fetch(:authmethods, "anonymous")]
|
24
|
+
details[:authextra] = Validate.hash!("AuthExtra", hsh.fetch(:authextra)) if hsh[:authextra]
|
25
|
+
details
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.parse(wamp_message)
|
29
|
+
_type, realm, details = wamp_message
|
30
|
+
new(realm, details)
|
31
|
+
end
|
32
|
+
|
33
|
+
def roles
|
34
|
+
@roles ||= details.fetch(:roles, {})
|
35
|
+
end
|
36
|
+
|
37
|
+
def authid
|
38
|
+
@authid ||= details[:authid]
|
39
|
+
end
|
40
|
+
|
41
|
+
def authmethods
|
42
|
+
@authmethods ||= details.fetch(:authmethods, [])
|
43
|
+
end
|
44
|
+
|
45
|
+
def authextra
|
46
|
+
@authextra ||= details.fetch(:authextra, {})
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def default_details
|
52
|
+
{ roles: default_roles }
|
53
|
+
end
|
54
|
+
|
55
|
+
def default_roles
|
56
|
+
{ caller: {}, publisher: {}, subscriber: {}, callee: {} }
|
57
|
+
end
|
58
|
+
|
59
|
+
def additional_details
|
60
|
+
{ agent: "Ruby-Wamp-Client-#{Wampproto::VERSION}" }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# abort message
|
6
|
+
class Invocation < Base
|
7
|
+
attr_reader :request_id, :registration_id, :details, :args, :kwargs
|
8
|
+
|
9
|
+
def initialize(request_id, registration_id, details, *args, **kwargs)
|
10
|
+
super()
|
11
|
+
@request_id = Validate.int!("Request Id", request_id)
|
12
|
+
@registration_id = Validate.int!("Registration Id", registration_id)
|
13
|
+
@details = Validate.hash!("Details", details)
|
14
|
+
@args = Validate.array!("Arguments", args)
|
15
|
+
@kwargs = Validate.hash!("Keyword Arguments", kwargs)
|
16
|
+
end
|
17
|
+
|
18
|
+
def marshal
|
19
|
+
@payload = [Type::INVOCATION, request_id, registration_id, details]
|
20
|
+
@payload << args if kwargs.any? || args.any?
|
21
|
+
@payload << kwargs if kwargs.any?
|
22
|
+
@payload
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.parse(wamp_message)
|
26
|
+
_type, request_id, registration_id, details, args, kwargs = wamp_message
|
27
|
+
args ||= []
|
28
|
+
kwargs ||= {}
|
29
|
+
new(request_id, registration_id, details, *args, **kwargs)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# publish message
|
6
|
+
class Publish < Base
|
7
|
+
attr_reader :request_id, :options, :topic, :args, :kwargs
|
8
|
+
|
9
|
+
def initialize(request_id, options, topic, *args, **kwargs)
|
10
|
+
super()
|
11
|
+
@request_id = Validate.int!("Request Id", request_id)
|
12
|
+
@options = Validate.hash!("Options", options)
|
13
|
+
@topic = Validate.string!("Topic", topic)
|
14
|
+
@args = Validate.array!("Arguments", args)
|
15
|
+
@kwargs = Validate.hash!("Keyword Arguments", kwargs)
|
16
|
+
end
|
17
|
+
|
18
|
+
def marshal
|
19
|
+
@payload = [Type::PUBLISH, request_id, options, topic]
|
20
|
+
@payload << args if kwargs.any? || args.any?
|
21
|
+
@payload << kwargs if kwargs.any?
|
22
|
+
@payload
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.parse(wamp_message)
|
26
|
+
_type, request_id, options, topic, args, kwargs = wamp_message
|
27
|
+
args ||= []
|
28
|
+
kwargs ||= {}
|
29
|
+
new(request_id, options, topic, *args, **kwargs)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# published message
|
6
|
+
class Published < Base
|
7
|
+
attr_reader :request_id, :publication_id
|
8
|
+
|
9
|
+
def initialize(request_id, publication_id)
|
10
|
+
super()
|
11
|
+
@request_id = Validate.int!("Request Id", request_id)
|
12
|
+
@publication_id = Validate.int!("Publication Id", publication_id)
|
13
|
+
end
|
14
|
+
|
15
|
+
def marshal
|
16
|
+
[Type::PUBLISHED, request_id, publication_id]
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.parse(wamp_message)
|
20
|
+
_type, request_id, publication_id = Validate.length!(wamp_message, 3)
|
21
|
+
new(request_id, publication_id)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# publish message
|
6
|
+
class Register < Base
|
7
|
+
attr_reader :request_id, :options, :procedure
|
8
|
+
|
9
|
+
def initialize(request_id, options, procedure)
|
10
|
+
super()
|
11
|
+
@request_id = Validate.int!("Request Id", request_id)
|
12
|
+
@options = Validate.hash!("Options", options)
|
13
|
+
@procedure = Validate.string!("Procedure", procedure)
|
14
|
+
end
|
15
|
+
|
16
|
+
def marshal
|
17
|
+
[Type::REGISTER, request_id, options, procedure]
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.parse(wamp_message)
|
21
|
+
_type, request_id, options, procedure = wamp_message
|
22
|
+
new(request_id, options, procedure)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# publish message
|
6
|
+
class Registered < Base
|
7
|
+
attr_reader :request_id, :registration_id
|
8
|
+
|
9
|
+
def initialize(request_id, registration_id)
|
10
|
+
super()
|
11
|
+
@request_id = Validate.int!("Request Id", request_id)
|
12
|
+
@registration_id = Validate.int!("Registration Id", registration_id)
|
13
|
+
end
|
14
|
+
|
15
|
+
def marshal
|
16
|
+
[Type::REGISTERED, request_id, registration_id]
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.parse(wamp_message)
|
20
|
+
_type, request_id, registration_id = wamp_message
|
21
|
+
new(request_id, registration_id)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# wamp call message
|
6
|
+
class Result < Base
|
7
|
+
attr_reader :request_id, :details, :procedure, :args, :kwargs
|
8
|
+
|
9
|
+
def initialize(request_id, details, *args, **kwargs)
|
10
|
+
super()
|
11
|
+
@request_id = Validate.int!("Request Id", request_id)
|
12
|
+
@details = Validate.hash!("Details", details)
|
13
|
+
@args = Validate.array!("Arguments", args)
|
14
|
+
@kwargs = Validate.hash!("Keyword Arguments", kwargs)
|
15
|
+
end
|
16
|
+
|
17
|
+
def marshal
|
18
|
+
@payload = [Type::RESULT, request_id, details]
|
19
|
+
@payload << args if kwargs.any? || args.any?
|
20
|
+
@payload << kwargs if kwargs.any?
|
21
|
+
@payload
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.parse(wamp_message)
|
25
|
+
_type, request_id, details, args, kwargs = wamp_message
|
26
|
+
args ||= []
|
27
|
+
kwargs ||= {}
|
28
|
+
new(request_id, details, *args, **kwargs)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# abort message
|
6
|
+
class Subscribe < Base
|
7
|
+
attr_reader :request_id, :options, :topic
|
8
|
+
|
9
|
+
def initialize(request_id, options, topic)
|
10
|
+
super()
|
11
|
+
@request_id = Validate.int!("Request Id", request_id)
|
12
|
+
@options = Validate.hash!("Options", options)
|
13
|
+
@topic = Validate.string!("Topic", topic)
|
14
|
+
end
|
15
|
+
|
16
|
+
def marshal
|
17
|
+
[Type::SUBSCRIBE, request_id, options, topic]
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.parse(wamp_message)
|
21
|
+
_type, request_id, options, topic = wamp_message
|
22
|
+
new(request_id, options, topic)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# abort message
|
6
|
+
class Subscribed < Base
|
7
|
+
attr_reader :request_id, :subscription_id
|
8
|
+
|
9
|
+
def initialize(request_id, subscription_id)
|
10
|
+
super()
|
11
|
+
@request_id = Validate.int!("Request Id", request_id)
|
12
|
+
@subscription_id = Validate.int!("Subscription Id", subscription_id)
|
13
|
+
end
|
14
|
+
|
15
|
+
def marshal
|
16
|
+
[Type::SUBSCRIBED, request_id, subscription_id]
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.parse(wamp_message)
|
20
|
+
_type, request_id, subscription_id = Validate.length!(wamp_message, 3)
|
21
|
+
new(request_id, subscription_id)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# unregister message
|
6
|
+
class Unregister < Base
|
7
|
+
attr_reader :request_id, :registration_id
|
8
|
+
|
9
|
+
def initialize(request_id, registration_id)
|
10
|
+
super()
|
11
|
+
@request_id = Validate.int!("Request Id", request_id)
|
12
|
+
@registration_id = Validate.int!("Registration Id", registration_id)
|
13
|
+
end
|
14
|
+
|
15
|
+
def marshal
|
16
|
+
[Type::UNREGISTER, request_id, registration_id]
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.parse(wamp_message)
|
20
|
+
_type, request_id, registration_id = wamp_message
|
21
|
+
new(request_id, registration_id)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# unregistered message
|
6
|
+
class Unregistered < Base
|
7
|
+
attr_reader :request_id
|
8
|
+
|
9
|
+
def initialize(request_id)
|
10
|
+
super()
|
11
|
+
@request_id = Validate.int!("Request Id", request_id)
|
12
|
+
end
|
13
|
+
|
14
|
+
def marshal
|
15
|
+
[Type::UNREGISTERED, request_id]
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.parse(wamp_message)
|
19
|
+
_type, request_id = wamp_message
|
20
|
+
new(request_id)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# abort message
|
6
|
+
class Unsubscribe < Base
|
7
|
+
attr_reader :request_id, :subscription_id
|
8
|
+
|
9
|
+
def initialize(request_id, subscription_id)
|
10
|
+
super()
|
11
|
+
@request_id = Validate.int!("Request Id", request_id)
|
12
|
+
@subscription_id = Validate.int!("Subscription Id", subscription_id)
|
13
|
+
end
|
14
|
+
|
15
|
+
def marshal
|
16
|
+
[Type::UNSUBSCRIBE, request_id, subscription_id]
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.parse(wamp_message)
|
20
|
+
_type, request_id, subscription_id = Validate.length!(wamp_message, 3)
|
21
|
+
new(request_id, subscription_id)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# Unsubscribed message
|
6
|
+
class Unsubscribed < Base
|
7
|
+
attr_reader :request_id
|
8
|
+
|
9
|
+
def initialize(request_id)
|
10
|
+
super()
|
11
|
+
@request_id = Validate.int!("Request Id", request_id)
|
12
|
+
end
|
13
|
+
|
14
|
+
def marshal
|
15
|
+
[Type::UNSUBSCRIBED, request_id]
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.parse(wamp_message)
|
19
|
+
_type, request_id = Validate.length!(wamp_message, 2)
|
20
|
+
new(request_id)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# welcome message
|
6
|
+
class Welcome < Base
|
7
|
+
attr_reader :session_id, :details
|
8
|
+
|
9
|
+
def initialize(session_id, details = {})
|
10
|
+
super()
|
11
|
+
@session_id = Validate.int!("Session Id", session_id)
|
12
|
+
@details = Validate.hash!("Details", details)
|
13
|
+
end
|
14
|
+
|
15
|
+
def marshal
|
16
|
+
[Type::WELCOME, @session_id, @details]
|
17
|
+
end
|
18
|
+
|
19
|
+
def authrole
|
20
|
+
@authrole ||= details.fetch(:authrole, [])
|
21
|
+
end
|
22
|
+
|
23
|
+
def authid
|
24
|
+
@authid ||= details[:authid]
|
25
|
+
end
|
26
|
+
|
27
|
+
def authmethod
|
28
|
+
@authmethod ||= details[:authmethod]
|
29
|
+
end
|
30
|
+
|
31
|
+
def authextra
|
32
|
+
@authextra ||= details.fetch(:authextra) if details.member?(:authextra)
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.parse(wamp_message)
|
36
|
+
_type, session_id, details = wamp_message
|
37
|
+
new(session_id, details)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Wampproto
|
4
|
+
module Message
|
5
|
+
# yield message
|
6
|
+
class Yield < Base
|
7
|
+
attr_reader :request_id, :options, :args, :kwargs
|
8
|
+
|
9
|
+
def initialize(request_id, options, *args, **kwargs)
|
10
|
+
super()
|
11
|
+
@request_id = Validate.int!("Request Id", request_id)
|
12
|
+
@options = Validate.hash!("Options", options)
|
13
|
+
@args = Validate.array!("Arguments", args)
|
14
|
+
@kwargs = Validate.hash!("Keyword Arguments", kwargs)
|
15
|
+
end
|
16
|
+
|
17
|
+
def marshal
|
18
|
+
@payload = [Type::YIELD, request_id, options]
|
19
|
+
@payload << args if kwargs.any? || args.any?
|
20
|
+
@payload << kwargs if kwargs.any?
|
21
|
+
@payload
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.parse(wamp_message)
|
25
|
+
_type, request_id, options, args, kwargs = wamp_message
|
26
|
+
args ||= []
|
27
|
+
kwargs ||= {}
|
28
|
+
new(request_id, options, *args, **kwargs)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|