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,34 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Auth
|
3
|
+
# generates wampcra authentication signature
|
4
|
+
class Cra < Base
|
5
|
+
@secret: String
|
6
|
+
|
7
|
+
attr_reader secret: String
|
8
|
+
|
9
|
+
include Helpers
|
10
|
+
extend Helpers::ClassMethods
|
11
|
+
|
12
|
+
AUTH_METHOD: "wampcra"
|
13
|
+
|
14
|
+
def initialize: (String secret, String authid, Hash[Symbol, untyped] authextra) -> void
|
15
|
+
|
16
|
+
def authenticate: (Message::Challenge challenge) -> Message::Authenticate
|
17
|
+
|
18
|
+
def self.create_challenge: (Integer session_id, String authid, String authrole, String authprovider) -> String
|
19
|
+
|
20
|
+
def self.verify_challenge: (String signature, String challenge, String secret, ?String? salt, ?::Integer keylen, ?::Integer iterations) -> bool
|
21
|
+
|
22
|
+
def self.sign_challenge: (String secret, String challenge, ?String? salt, ?::Integer keylen, ?::Integer iterations) -> String
|
23
|
+
|
24
|
+
def self.create_derive_secret: (String secret, String salt, Integer length, Integer iterations) -> untyped
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def create_signature: (Message::Challenge challenge) -> String
|
29
|
+
|
30
|
+
def create_drived_secret: (Hash[Symbol, untyped] extra) -> untyped
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Auth
|
3
|
+
# generates wampcra authentication signature
|
4
|
+
class Cryptosign < Base
|
5
|
+
@private_key: String
|
6
|
+
|
7
|
+
@key_pair: untyped
|
8
|
+
|
9
|
+
include Helpers
|
10
|
+
extend Helpers::ClassMethods
|
11
|
+
|
12
|
+
attr_reader private_key: String
|
13
|
+
|
14
|
+
attr_accessor channel_id: String
|
15
|
+
|
16
|
+
AUTH_METHOD: "cryptosign"
|
17
|
+
|
18
|
+
def initialize: (String private_key, String authid, ?::Hash[Symbol, untyped] authextra) -> void
|
19
|
+
|
20
|
+
def authenticate: (Wampproto::Message::Challenge challenge) -> Wampproto::Message::Authenticate
|
21
|
+
|
22
|
+
def self.create_challenge: () -> (::Integer | ::Float | ::String | nil)
|
23
|
+
|
24
|
+
def self.verify_challenge: (String signature, String msg, String public_key) -> bool
|
25
|
+
|
26
|
+
def self.sign_challenge: (String private_key, String challenge, ?String? channel_id) -> String
|
27
|
+
|
28
|
+
def self.create_signature: (String private_key, String challenge, ?String? channel_id) -> untyped
|
29
|
+
|
30
|
+
def self.handle_without_channel_binding: (String private_key, String hex_challenge) -> ::String
|
31
|
+
|
32
|
+
def self.handle_channel_binding: (String private_key, String hex_challenge, String channel_id) -> ::String
|
33
|
+
|
34
|
+
def self.xored_strings: (String channel_id, String challenge_str) -> String
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Wampproto
|
2
|
+
# Auth classes
|
3
|
+
module Auth
|
4
|
+
# Auth Helpers
|
5
|
+
module Helpers
|
6
|
+
def self.included: (untyped base) -> void
|
7
|
+
|
8
|
+
# class methods
|
9
|
+
module ClassMethods
|
10
|
+
def hex_to_binary: (String hex_string) -> String
|
11
|
+
|
12
|
+
def binary_to_hex: (String binary_string) -> untyped
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Auth
|
3
|
+
# generates ticket authentication signature
|
4
|
+
class Ticket < Base
|
5
|
+
@secret: String
|
6
|
+
|
7
|
+
AUTH_METHOD: "ticket"
|
8
|
+
|
9
|
+
attr_reader secret: String
|
10
|
+
|
11
|
+
def initialize: (String secret, String authid, ?::Hash[Symbol, untyped] authextra) -> void
|
12
|
+
|
13
|
+
def authenticate: (Message::Challenge challenge) -> Message::Authenticate
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def create_signature: (untyped _challenge) -> untyped
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Wampproto
|
2
|
+
# Wampproto broker implementation
|
3
|
+
class Broker
|
4
|
+
@id_gen: untyped
|
5
|
+
|
6
|
+
@subscriptions_by_session: Hash[Integer, Hash[Integer, String]]
|
7
|
+
|
8
|
+
@subscriptions_by_topic: Hash[String, Hash[Integer, Array[Integer]]]
|
9
|
+
|
10
|
+
@sessions: Hash[Integer, SessionDetails]
|
11
|
+
|
12
|
+
attr_reader subscriptions_by_session: Hash[Integer, Hash[Integer, String]]
|
13
|
+
|
14
|
+
attr_reader subscriptions_by_topic: Hash[String, Hash[Integer, Array[Integer]]]
|
15
|
+
|
16
|
+
attr_reader sessions: Hash[Integer, SessionDetails]
|
17
|
+
|
18
|
+
attr_reader id_gen: IdGenerator
|
19
|
+
|
20
|
+
def initialize: (?IdGenerator id_gen) -> void
|
21
|
+
|
22
|
+
def add_session: (SessionDetails session_id) -> untyped
|
23
|
+
|
24
|
+
def remove_session: (Integer session_id) -> untyped
|
25
|
+
|
26
|
+
def subscription?: (String topic) -> (false | untyped)
|
27
|
+
|
28
|
+
def receive_message: (Integer session_id, untyped message) -> untyped
|
29
|
+
|
30
|
+
def handle_publish: (Integer session_id, Message::Publish message) -> untyped
|
31
|
+
|
32
|
+
def handle_subscribe: (Integer session_id, Message::Subscribe message) -> untyped
|
33
|
+
|
34
|
+
def handle_unsubscribe: (Integer session_id, Message::Unsubscribe message) -> untyped
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def find_subscription_id_from: (String topic) -> Integer
|
39
|
+
|
40
|
+
def remove_topic_subscriber: (String topic, Integer subscription_id, Integer session_id) -> untyped
|
41
|
+
|
42
|
+
def add_topic_subscriber: (String topic, Integer subscription_id, Integer session_id) -> untyped
|
43
|
+
|
44
|
+
def exclude?: (untyped message, Integer session_id, Integer recipient_id) -> (false | untyped)
|
45
|
+
|
46
|
+
def event_details_for: (Integer session_id, untyped message) -> Hash[Symbol, untyped]
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Wampproto
|
2
|
+
# Wamprpoto Dealer handler
|
3
|
+
class Dealer
|
4
|
+
@registrations_by_session: Hash[Integer, Hash[Integer, String]]
|
5
|
+
|
6
|
+
@registrations_by_procedure: Hash[String, Hash[Integer, Integer]]
|
7
|
+
|
8
|
+
@sessions: Hash[Integer, SessionDetails]
|
9
|
+
|
10
|
+
@pending_calls: Hash[Integer, Hash[Integer, Integer]]
|
11
|
+
|
12
|
+
@pending_invocations: Hash[Integer, Hash[Integer, Integer]]
|
13
|
+
|
14
|
+
@id_gen: IdGenerator
|
15
|
+
|
16
|
+
attr_reader registrations_by_procedure: Hash[String, Hash[Integer, Integer]]
|
17
|
+
|
18
|
+
attr_reader registrations_by_session: Hash[Integer, Hash[Integer, String]]
|
19
|
+
|
20
|
+
attr_reader sessions: Hash[Integer, SessionDetails]
|
21
|
+
|
22
|
+
attr_reader pending_calls: Hash[Integer, Hash[Integer, Integer]]
|
23
|
+
|
24
|
+
attr_reader pending_invocations: Hash[Integer, Hash[Integer, Integer]]
|
25
|
+
|
26
|
+
attr_reader id_gen: IdGenerator
|
27
|
+
|
28
|
+
def initialize: (?IdGenerator id_gen) -> void
|
29
|
+
|
30
|
+
def add_session: (SessionDetails session_details) -> untyped
|
31
|
+
|
32
|
+
def remove_session: (Integer session_id) -> untyped
|
33
|
+
|
34
|
+
def registration?: (String procedure) -> (false | untyped)
|
35
|
+
|
36
|
+
def receive_message: (Integer session_id, untyped message) -> untyped
|
37
|
+
|
38
|
+
def handle_call: (Integer session_id, Message::Call message) -> MessageWithRecipient
|
39
|
+
|
40
|
+
def handle_yield: (Integer session_id, Message::Yield message) -> (nil | MessageWithRecipient)
|
41
|
+
|
42
|
+
def handle_register: (Integer session_id, Message::Register message) -> (nil | MessageWithRecipient)
|
43
|
+
|
44
|
+
def handle_unregister: (Integer session_id, Message::Unregister message) -> (nil | MessageWithRecipient)
|
45
|
+
|
46
|
+
def invocation_details_for: (Integer session_id, untyped message) -> Hash[Symbol, untyped]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Wampproto
|
2
|
+
# ID Generator
|
3
|
+
class IdGenerator
|
4
|
+
self.@ids: Array[Integer]
|
5
|
+
|
6
|
+
@id: Integer
|
7
|
+
|
8
|
+
MAX_ID: Integer
|
9
|
+
|
10
|
+
def self.generate_session_id: () -> Integer
|
11
|
+
|
12
|
+
def initialize: () -> void
|
13
|
+
|
14
|
+
def next: () -> Integer
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Wampproto
|
2
|
+
CLIENT_ROLES: { caller: { features: ::Hash[untyped, untyped] }, callee: { features: ::Hash[untyped, untyped] }, publisher: { features: ::Hash[untyped, untyped] }, subscriber: { features: ::Hash[untyped, untyped] } }
|
3
|
+
|
4
|
+
# Handle Joining part of wamp protocol
|
5
|
+
class Joiner
|
6
|
+
@realm: String
|
7
|
+
|
8
|
+
type serializerTypes = (singleton(Serializer::JSON) | singleton(Serializer::Msgpack) | singleton(Serializer::Cbor))
|
9
|
+
type authenticatorsType = Auth::Anonymous | Auth::Ticket | Auth::Cra | Auth::Cryptosign
|
10
|
+
|
11
|
+
@serializer: serializerTypes
|
12
|
+
|
13
|
+
@authenticator: Auth::Base
|
14
|
+
|
15
|
+
@state: Integer
|
16
|
+
|
17
|
+
@session_details: SessionDetails
|
18
|
+
|
19
|
+
STATE_NONE: 0
|
20
|
+
|
21
|
+
STATE_HELLO_SENT: 1
|
22
|
+
|
23
|
+
STATE_AUTHENTICATE_SENT: 2
|
24
|
+
|
25
|
+
STATE_JOINED: 3
|
26
|
+
|
27
|
+
attr_reader realm: String
|
28
|
+
|
29
|
+
attr_reader serializer: serializerTypes
|
30
|
+
|
31
|
+
attr_reader authenticator: Auth::Base
|
32
|
+
|
33
|
+
attr_accessor state: Integer
|
34
|
+
|
35
|
+
def initialize: (String realm, ?serializerTypes serializer, ?authenticatorsType authenticator) -> void
|
36
|
+
|
37
|
+
def send_hello: () -> (Array[untyped] | String)
|
38
|
+
|
39
|
+
def receive: (untyped data) -> (nil | untyped)
|
40
|
+
|
41
|
+
def receive_message: (Message::Base msg) -> (Message::Authenticate | nil | Integer | String)
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Message
|
3
|
+
# abort message
|
4
|
+
class Abort < Base
|
5
|
+
@details: Hash[Symbol, untyped]
|
6
|
+
|
7
|
+
@reason: String
|
8
|
+
|
9
|
+
@args: Array[untyped]
|
10
|
+
|
11
|
+
@kwargs: Hash[Symbol, untyped]
|
12
|
+
|
13
|
+
@marshal: Array[untyped]
|
14
|
+
|
15
|
+
attr_reader details: Hash[Symbol, untyped]
|
16
|
+
|
17
|
+
attr_reader reason: String
|
18
|
+
|
19
|
+
attr_reader args: Array[untyped]
|
20
|
+
|
21
|
+
attr_reader kwargs: Hash[Symbol, untyped]
|
22
|
+
|
23
|
+
def initialize: (Hash[Symbol, untyped] details, String reason, *Array[untyped] args, **Hash[Symbol, untyped] kwargs) -> void
|
24
|
+
|
25
|
+
def marshal: () -> Array[untyped]
|
26
|
+
|
27
|
+
def self.parse: (Array[untyped] wamp_message) -> Abort
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Message
|
3
|
+
# Wamp Authenticate message
|
4
|
+
class Authenticate < Base
|
5
|
+
@signature: String
|
6
|
+
|
7
|
+
@extra: Hash[Symbol, untyped]
|
8
|
+
|
9
|
+
attr_reader signature: String
|
10
|
+
|
11
|
+
attr_reader extra: Hash[Symbol, untyped]
|
12
|
+
|
13
|
+
def initialize: (String signature, ?::Hash[Symbol, untyped] extra) -> void
|
14
|
+
|
15
|
+
def marshal: () -> ::Array[untyped]
|
16
|
+
|
17
|
+
def self.parse: (Array[untyped] wamp_message) -> Authenticate
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Message
|
3
|
+
# Base Interface for the Message(s)
|
4
|
+
class Base
|
5
|
+
def self.parse: (Array[untyped] msg) -> Base
|
6
|
+
|
7
|
+
def self.type: () -> Integer
|
8
|
+
|
9
|
+
def marshal: () -> Array[untyped]
|
10
|
+
|
11
|
+
def type: () -> Integer
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Message
|
3
|
+
# wamp call message
|
4
|
+
class Call < Base
|
5
|
+
@request_id: Integer
|
6
|
+
|
7
|
+
@options: Hash[Symbol, untyped]
|
8
|
+
|
9
|
+
@procedure: String
|
10
|
+
|
11
|
+
@args: Array[untyped]
|
12
|
+
|
13
|
+
@kwargs: Hash[Symbol, untyped]
|
14
|
+
|
15
|
+
@payload: Array[untyped]
|
16
|
+
|
17
|
+
attr_reader request_id: Integer
|
18
|
+
|
19
|
+
attr_reader options: Hash[Symbol, untyped]
|
20
|
+
|
21
|
+
attr_reader procedure: String
|
22
|
+
|
23
|
+
attr_reader args: Array[untyped]
|
24
|
+
|
25
|
+
attr_reader kwargs: Hash[Symbol, untyped]
|
26
|
+
|
27
|
+
def initialize: (Integer request_id, Hash[Symbol, untyped] options, String procedure, *Array[untyped] args, **Hash[Symbol, untyped] kwargs) -> void
|
28
|
+
|
29
|
+
def marshal: () -> Array[untyped]
|
30
|
+
|
31
|
+
def self.parse: (Array[untyped] wamp_message) -> Call
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Message
|
3
|
+
# Wamp Challenge message
|
4
|
+
class Challenge < Base
|
5
|
+
@auth_method: String
|
6
|
+
|
7
|
+
@extra: Hash[Symbol, untyped]
|
8
|
+
|
9
|
+
attr_reader auth_method: String
|
10
|
+
|
11
|
+
attr_reader extra: Hash[Symbol, untyped]
|
12
|
+
|
13
|
+
def initialize: (String auth_method, ?::Hash[Symbol, untyped] extra) -> void
|
14
|
+
|
15
|
+
def marshal: () -> ::Array[untyped]
|
16
|
+
|
17
|
+
def self.parse: (Array[untyped] wamp_message) -> Challenge
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Message
|
3
|
+
# abort message
|
4
|
+
class Error < Base
|
5
|
+
@message_type: Integer
|
6
|
+
|
7
|
+
@request_id: Integer
|
8
|
+
|
9
|
+
@details: Hash[Symbol, untyped]
|
10
|
+
|
11
|
+
@error: String
|
12
|
+
|
13
|
+
attr_reader message_type: Integer
|
14
|
+
|
15
|
+
attr_reader request_id: Integer
|
16
|
+
|
17
|
+
attr_reader details: Hash[Symbol, untyped]
|
18
|
+
|
19
|
+
attr_reader error: String
|
20
|
+
|
21
|
+
def initialize: (Integer message_type, Integer request_id, Hash[Symbol, untyped] details, String error) -> void
|
22
|
+
|
23
|
+
def marshal: () -> ::Array[untyped]
|
24
|
+
|
25
|
+
def self.parse: (Array[untyped] wamp_message) -> Error
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Message
|
3
|
+
# event message
|
4
|
+
class Event < Base
|
5
|
+
@subscription_id: Integer
|
6
|
+
|
7
|
+
@publication_id: Integer
|
8
|
+
|
9
|
+
@details: Hash[Symbol, untyped]
|
10
|
+
|
11
|
+
@args: Array[untyped]
|
12
|
+
|
13
|
+
@kwargs: Hash[Symbol, untyped]
|
14
|
+
|
15
|
+
@payload: Array[untyped]
|
16
|
+
|
17
|
+
attr_reader subscription_id: Integer
|
18
|
+
|
19
|
+
attr_reader publication_id: Integer
|
20
|
+
|
21
|
+
attr_reader details: Hash[Symbol, untyped]
|
22
|
+
|
23
|
+
attr_reader args: Array[untyped]
|
24
|
+
|
25
|
+
attr_reader kwargs: Hash[Symbol, untyped]
|
26
|
+
|
27
|
+
def initialize: (Integer subscription_id, Integer publication_id, Hash[Symbol, untyped] details, *Array[untyped] args, **Hash[Symbol, untyped] kwargs) -> void
|
28
|
+
|
29
|
+
def marshal: () -> Array[untyped]
|
30
|
+
|
31
|
+
def self.parse: (Array[untyped] wamp_message) -> Event
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Message
|
3
|
+
# abort message
|
4
|
+
class Goodbye < Base
|
5
|
+
@details: Hash[Symbol, untyped]
|
6
|
+
|
7
|
+
@reason: String
|
8
|
+
|
9
|
+
attr_reader details: Hash[Symbol, untyped]
|
10
|
+
|
11
|
+
attr_reader reason: String
|
12
|
+
|
13
|
+
def initialize: (Hash[Symbol, untyped] details, String reason) -> void
|
14
|
+
|
15
|
+
def marshal: () -> ::Array[untyped]
|
16
|
+
|
17
|
+
def self.parse: (Array[untyped] wamp_message) -> Goodbye
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Message
|
3
|
+
# Wamp Hello message
|
4
|
+
class Hello < Base
|
5
|
+
@realm: String
|
6
|
+
|
7
|
+
@details: Hash[Symbol, untyped]
|
8
|
+
|
9
|
+
attr_reader realm: String
|
10
|
+
|
11
|
+
attr_reader details: Hash[Symbol, untyped]
|
12
|
+
|
13
|
+
def initialize: (String realm, ?::Hash[Symbol, untyped] details) -> void
|
14
|
+
|
15
|
+
def marshal: () -> ::Array[untyped]
|
16
|
+
|
17
|
+
def parse_details: (?::Hash[Symbol, untyped] hsh) -> Hash[Symbol, untyped]
|
18
|
+
|
19
|
+
def roles: () -> Hash[Symbol, untyped]
|
20
|
+
|
21
|
+
def authid: () -> String
|
22
|
+
|
23
|
+
def authmethods: () -> Array[String]
|
24
|
+
|
25
|
+
def authextra: () -> Hash[Symbol, untyped]
|
26
|
+
|
27
|
+
def self.parse: (Array[untyped] wamp_message) -> Hello
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def default_details: () -> { roles: Hash[Symbol, untyped] }
|
32
|
+
|
33
|
+
def default_roles: () -> Hash[Symbol, untyped]
|
34
|
+
|
35
|
+
def additional_details: () -> { agent: ::String }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Message
|
3
|
+
# abort message
|
4
|
+
class Invocation < Base
|
5
|
+
@request_id: Integer
|
6
|
+
|
7
|
+
@registration_id: Integer
|
8
|
+
|
9
|
+
@details: Hash[Symbol, untyped]
|
10
|
+
|
11
|
+
@args: Array[untyped]
|
12
|
+
|
13
|
+
@kwargs: Hash[Symbol, untyped]
|
14
|
+
|
15
|
+
@payload: Array[untyped]
|
16
|
+
|
17
|
+
attr_reader request_id: Integer
|
18
|
+
|
19
|
+
attr_reader registration_id: Integer
|
20
|
+
|
21
|
+
attr_reader details: Hash[Symbol, untyped]
|
22
|
+
|
23
|
+
attr_reader args: Array[untyped]
|
24
|
+
|
25
|
+
attr_reader kwargs: Hash[Symbol, untyped]
|
26
|
+
|
27
|
+
def initialize: (Integer request_id, Integer registration_id, Hash[Symbol, untyped] details, *Array[untyped] args, **Hash[Symbol, untyped] kwargs) -> void
|
28
|
+
|
29
|
+
def marshal: () -> Array[untyped]
|
30
|
+
|
31
|
+
def self.parse: (Array[untyped] wamp_message) -> Invocation
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Message
|
3
|
+
# publish message
|
4
|
+
class Publish < Base
|
5
|
+
@request_id: Integer
|
6
|
+
|
7
|
+
@options: Hash[Symbol, untyped]
|
8
|
+
|
9
|
+
@topic: String
|
10
|
+
|
11
|
+
@args: Array[untyped]
|
12
|
+
|
13
|
+
@kwargs: Hash[Symbol, untyped]
|
14
|
+
|
15
|
+
attr_reader request_id: Integer
|
16
|
+
|
17
|
+
attr_reader options: Hash[Symbol, untyped]
|
18
|
+
|
19
|
+
attr_reader topic: String
|
20
|
+
|
21
|
+
attr_reader args: Array[untyped]
|
22
|
+
|
23
|
+
attr_reader kwargs: Hash[Symbol, untyped]
|
24
|
+
|
25
|
+
def initialize: (Integer request_id, Hash[Symbol, untyped] options, String topic, *Array[untyped] args, **Hash[Symbol, untyped] kwargs) -> void
|
26
|
+
|
27
|
+
def marshal: () -> Array[untyped]
|
28
|
+
|
29
|
+
def self.parse: (Array[untyped] wamp_message) -> Publish
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Message
|
3
|
+
# published message
|
4
|
+
class Published < Base
|
5
|
+
@request_id: Integer
|
6
|
+
|
7
|
+
@publication_id: Integer
|
8
|
+
|
9
|
+
attr_reader request_id: Integer
|
10
|
+
|
11
|
+
attr_reader publication_id: Integer
|
12
|
+
|
13
|
+
def initialize: (Integer request_id, Integer publication_id) -> void
|
14
|
+
|
15
|
+
def marshal: () -> ::Array[untyped]
|
16
|
+
|
17
|
+
def self.parse: (Array[untyped] wamp_message) -> Published
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Message
|
3
|
+
# publish message
|
4
|
+
class Register < Base
|
5
|
+
@request_id: Integer
|
6
|
+
|
7
|
+
@options: Hash[Symbol, untyped]
|
8
|
+
|
9
|
+
@procedure: String
|
10
|
+
|
11
|
+
attr_reader request_id: Integer
|
12
|
+
|
13
|
+
attr_reader options: Hash[Symbol, untyped]
|
14
|
+
|
15
|
+
attr_reader procedure: String
|
16
|
+
|
17
|
+
def initialize: (Integer request_id, Hash[Symbol, untyped] options, String procedure) -> void
|
18
|
+
|
19
|
+
def marshal: () -> ::Array[untyped]
|
20
|
+
|
21
|
+
def self.parse: (Array[untyped] wamp_message) -> Register
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Wampproto
|
2
|
+
module Message
|
3
|
+
# publish message
|
4
|
+
class Registered < Base
|
5
|
+
@request_id: Integer
|
6
|
+
|
7
|
+
@registration_id: Integer
|
8
|
+
|
9
|
+
attr_reader request_id: Integer
|
10
|
+
|
11
|
+
attr_reader registration_id: Integer
|
12
|
+
|
13
|
+
def initialize: (Integer request_id, Integer registration_id) -> void
|
14
|
+
|
15
|
+
def marshal: () -> ::Array[untyped]
|
16
|
+
|
17
|
+
def self.parse: (Array[untyped] wamp_message) -> Registered
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|