wamp_client 0.0.1 → 0.0.2
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 +4 -4
- data/README.md +82 -0
- data/lib/wamp_client.rb +29 -1
- data/lib/wamp_client/auth.rb +27 -0
- data/lib/wamp_client/check.rb +27 -0
- data/lib/wamp_client/connection.rb +30 -1
- data/lib/wamp_client/defer.rb +68 -0
- data/lib/wamp_client/message.rb +27 -0
- data/lib/wamp_client/serializer.rb +27 -0
- data/lib/wamp_client/session.rb +101 -14
- data/lib/wamp_client/transport.rb +27 -0
- data/lib/wamp_client/version.rb +28 -1
- data/spec/session_spec.rb +239 -13
- data/spec/spec_helper.rb +4 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 150daa5402442aaf1557dda7501439fa35266669
|
4
|
+
data.tar.gz: 72d8de49f166b98d2688c2602857c3eef5cbb07d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a16f76680f8b99352b8321729f9f538d40db5b5d208c864e1d6770cd89e31b9733a8b72bd1378321fe83523bd1829720b1e772ee12a2b6430ba7c76ca290379a
|
7
|
+
data.tar.gz: 986f7e28cd8773a040778704e28ca4c8f47f213157073f8bd51116599c2da0b70a42989decf524384f9b8374d1a6890b26b02beeace5ec1831c377371d5c072f
|
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# WampClient
|
2
2
|
|
3
|
+
[](https://badge.fury.io/rb/wamp_client)
|
3
4
|
[](https://circleci.com/gh/ericchapman/ruby_wamp_client/tree/master)
|
4
5
|
[](https://codecov.io/github/ericchapman/ruby_wamp_client)
|
5
6
|
|
@@ -9,6 +10,9 @@ Client for talking to a WAMP Router. This is defined at
|
|
9
10
|
|
10
11
|
## Revision History
|
11
12
|
|
13
|
+
- v0.0.2:
|
14
|
+
- Added defer call result support
|
15
|
+
- Added progressive callee support
|
12
16
|
- v0.0.1:
|
13
17
|
- Initial Release
|
14
18
|
|
@@ -428,6 +432,84 @@ Options are
|
|
428
432
|
- receive_progress [Boolean] - "true" if you support results being able to be sent progressively
|
429
433
|
- disclose_me [Boolean] - "true" if the caller would like the callee to know the identity
|
430
434
|
|
435
|
+
#### Errors
|
436
|
+
Errors can either be raised OR returned as shown below
|
437
|
+
|
438
|
+
```ruby
|
439
|
+
handler = lambda do |args, kwargs, details|
|
440
|
+
raise 'error'
|
441
|
+
# OR
|
442
|
+
raise WampClient::CallError.new('wamp.error', ['some error'], {details: true})
|
443
|
+
# OR
|
444
|
+
WampClient::CallError.new('wamp.error', ['some error'], {details: true})
|
445
|
+
end
|
446
|
+
session.register('com.example.procedure', handler)
|
447
|
+
```
|
448
|
+
|
449
|
+
All 3 of the above examples will return a WAMP Error
|
450
|
+
|
451
|
+
#### Deferred Call
|
452
|
+
A deferred call refers to a call where the response needs to be asynchronously fetched before it can be returned to the
|
453
|
+
caller. This is shown below
|
454
|
+
|
455
|
+
```ruby
|
456
|
+
def add(args, kwargs, details)
|
457
|
+
defer = WampClient::Defer::CallDefer.new
|
458
|
+
EM.add_timer(2) { # Something Async
|
459
|
+
defer.succeed(args[0]+args[1])
|
460
|
+
}
|
461
|
+
defer
|
462
|
+
end
|
463
|
+
session.register('com.example.procedure', method(:add))
|
464
|
+
```
|
465
|
+
|
466
|
+
Errors are returned as follows
|
467
|
+
|
468
|
+
```ruby
|
469
|
+
def add(args, kwargs, details)
|
470
|
+
defer = WampClient::Defer::CallDefer.new
|
471
|
+
EM.add_timer(2) { # Something Async
|
472
|
+
defer.fail(WampClient::CallError.new('test.error'))
|
473
|
+
}
|
474
|
+
defer
|
475
|
+
end
|
476
|
+
session.register('com.example.procedure', method(:add))
|
477
|
+
```
|
478
|
+
|
479
|
+
#### Progressive Calls
|
480
|
+
Progressive calls are ones that return the result in pieces rather than all at once. They are invoked as follows
|
481
|
+
|
482
|
+
**Caller**
|
483
|
+
|
484
|
+
```ruby
|
485
|
+
results = []
|
486
|
+
session.call('com.example.procedure', [], {}, {receive_progress: true}) do |result, error, details|
|
487
|
+
results = results + result.args
|
488
|
+
unless details[:progress]
|
489
|
+
puts results # => [1,2,3,4,5,6]
|
490
|
+
end
|
491
|
+
end
|
492
|
+
```
|
493
|
+
|
494
|
+
**Callee**
|
495
|
+
|
496
|
+
```ruby
|
497
|
+
def add(args, kwargs, details)
|
498
|
+
defer = WampClient::Defer::ProgressiveCallDefer.new
|
499
|
+
EM.add_timer(2) { # Something Async
|
500
|
+
defer.progress(WampClient::CallResult.new([1,2,3]))
|
501
|
+
}
|
502
|
+
EM.add_timer(4) { # Something Async
|
503
|
+
defer.progress(WampClient::CallResult.new([1,2,3]))
|
504
|
+
}
|
505
|
+
EM.add_timer(6) { # Something Async
|
506
|
+
defer.succeed(WampClient::CallResult.new())
|
507
|
+
}
|
508
|
+
defer
|
509
|
+
end
|
510
|
+
session.register('com.example.procedure', method(:add))
|
511
|
+
```
|
512
|
+
|
431
513
|
## Contributing
|
432
514
|
|
433
515
|
1. Fork it ( https://github.com/ericchapman/ruby_wamp_client )
|
data/lib/wamp_client.rb
CHANGED
@@ -1,7 +1,35 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Copyright (c) 2016 Eric Chapman
|
4
|
+
|
5
|
+
MIT License
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
8
|
+
a copy of this software and associated documentation files (the
|
9
|
+
"Software"), to deal in the Software without restriction, including
|
10
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
11
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
+
permit persons to whom the Software is furnished to do so, subject to
|
13
|
+
the following conditions:
|
14
|
+
|
15
|
+
The above copyright notice and this permission notice shall be
|
16
|
+
included in all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
19
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
21
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
22
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
23
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
24
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
25
|
+
|
26
|
+
=end
|
27
|
+
|
1
28
|
require 'wamp_client/version'
|
2
29
|
require 'wamp_client/message'
|
3
30
|
require 'wamp_client/serializer'
|
4
31
|
require 'wamp_client/transport'
|
5
32
|
require 'wamp_client/connection'
|
6
33
|
require 'wamp_client/session'
|
7
|
-
require 'wamp_client/auth'
|
34
|
+
require 'wamp_client/auth'
|
35
|
+
require 'wamp_client/defer'
|
data/lib/wamp_client/auth.rb
CHANGED
@@ -1,3 +1,30 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Copyright (c) 2016 Eric Chapman
|
4
|
+
|
5
|
+
MIT License
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
8
|
+
a copy of this software and associated documentation files (the
|
9
|
+
"Software"), to deal in the Software without restriction, including
|
10
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
11
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
+
permit persons to whom the Software is furnished to do so, subject to
|
13
|
+
the following conditions:
|
14
|
+
|
15
|
+
The above copyright notice and this permission notice shall be
|
16
|
+
included in all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
19
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
21
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
22
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
23
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
24
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
25
|
+
|
26
|
+
=end
|
27
|
+
|
1
28
|
require 'openssl'
|
2
29
|
require 'base64'
|
3
30
|
|
data/lib/wamp_client/check.rb
CHANGED
@@ -1,3 +1,30 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Copyright (c) 2016 Eric Chapman
|
4
|
+
|
5
|
+
MIT License
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
8
|
+
a copy of this software and associated documentation files (the
|
9
|
+
"Software"), to deal in the Software without restriction, including
|
10
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
11
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
+
permit persons to whom the Software is furnished to do so, subject to
|
13
|
+
the following conditions:
|
14
|
+
|
15
|
+
The above copyright notice and this permission notice shall be
|
16
|
+
included in all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
19
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
21
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
22
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
23
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
24
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
25
|
+
|
26
|
+
=end
|
27
|
+
|
1
28
|
module WampClient
|
2
29
|
module Check
|
3
30
|
|
@@ -1,3 +1,30 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Copyright (c) 2016 Eric Chapman
|
4
|
+
|
5
|
+
MIT License
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
8
|
+
a copy of this software and associated documentation files (the
|
9
|
+
"Software"), to deal in the Software without restriction, including
|
10
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
11
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
+
permit persons to whom the Software is furnished to do so, subject to
|
13
|
+
the following conditions:
|
14
|
+
|
15
|
+
The above copyright notice and this permission notice shall be
|
16
|
+
included in all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
19
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
21
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
22
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
23
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
24
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
25
|
+
|
26
|
+
=end
|
27
|
+
|
1
28
|
require 'websocket-eventmachine-client'
|
2
29
|
require 'wamp_client/session'
|
3
30
|
require 'wamp_client/transport'
|
@@ -53,7 +80,9 @@ module WampClient
|
|
53
80
|
# @param options [Hash] The different options to pass to the connection
|
54
81
|
# @option options [String] :uri The uri of the WAMP router to connect to
|
55
82
|
# @option options [String] :realm The realm to connect to
|
56
|
-
# @option options [String] :protocol The protocol (default if wamp.2.json)
|
83
|
+
# @option options [String,nil] :protocol The protocol (default if wamp.2.json)
|
84
|
+
# @option options [String,nil] :authid The id to authenticate with
|
85
|
+
# @option options [Array, nil] :authmethods The different auth methods that the client supports
|
57
86
|
# @option options [Hash] :headers Custom headers to include during the connection
|
58
87
|
# @option options [WampClient::Serializer::Base] :serializer The serializer to use (default is json)
|
59
88
|
def initialize(options)
|
@@ -0,0 +1,68 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Copyright (c) 2016 Eric Chapman
|
4
|
+
|
5
|
+
MIT License
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
8
|
+
a copy of this software and associated documentation files (the
|
9
|
+
"Software"), to deal in the Software without restriction, including
|
10
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
11
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
+
permit persons to whom the Software is furnished to do so, subject to
|
13
|
+
the following conditions:
|
14
|
+
|
15
|
+
The above copyright notice and this permission notice shall be
|
16
|
+
included in all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
19
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
21
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
22
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
23
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
24
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
25
|
+
|
26
|
+
=end
|
27
|
+
|
28
|
+
module WampClient
|
29
|
+
module Defer
|
30
|
+
|
31
|
+
class CallDefer
|
32
|
+
attr_accessor :request
|
33
|
+
|
34
|
+
@on_complete
|
35
|
+
def on_complete(&on_complete)
|
36
|
+
@on_complete = on_complete
|
37
|
+
end
|
38
|
+
|
39
|
+
@on_error
|
40
|
+
def on_error(&on_error)
|
41
|
+
@on_error = on_error
|
42
|
+
end
|
43
|
+
|
44
|
+
def succeed(result)
|
45
|
+
@on_complete.call(self, result) if @on_complete
|
46
|
+
end
|
47
|
+
|
48
|
+
def fail(error)
|
49
|
+
@on_error.call(self, error) if @on_error
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
class ProgressiveCallDefer < CallDefer
|
55
|
+
|
56
|
+
@on_progress
|
57
|
+
def on_progress(&on_progress)
|
58
|
+
@on_progress = on_progress
|
59
|
+
end
|
60
|
+
|
61
|
+
def progress(result)
|
62
|
+
@on_progress.call(self, result) if @on_progress
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
data/lib/wamp_client/message.rb
CHANGED
@@ -1,3 +1,30 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Copyright (c) 2016 Eric Chapman
|
4
|
+
|
5
|
+
MIT License
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
8
|
+
a copy of this software and associated documentation files (the
|
9
|
+
"Software"), to deal in the Software without restriction, including
|
10
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
11
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
+
permit persons to whom the Software is furnished to do so, subject to
|
13
|
+
the following conditions:
|
14
|
+
|
15
|
+
The above copyright notice and this permission notice shall be
|
16
|
+
included in all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
19
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
21
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
22
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
23
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
24
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
25
|
+
|
26
|
+
=end
|
27
|
+
|
1
28
|
require 'wamp_client/check'
|
2
29
|
|
3
30
|
# !!!!THIS FILE IS AUTOGENERATED. DO NOT HAND EDIT!!!!
|
@@ -1,3 +1,30 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Copyright (c) 2016 Eric Chapman
|
4
|
+
|
5
|
+
MIT License
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
8
|
+
a copy of this software and associated documentation files (the
|
9
|
+
"Software"), to deal in the Software without restriction, including
|
10
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
11
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
+
permit persons to whom the Software is furnished to do so, subject to
|
13
|
+
the following conditions:
|
14
|
+
|
15
|
+
The above copyright notice and this permission notice shall be
|
16
|
+
included in all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
19
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
21
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
22
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
23
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
24
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
25
|
+
|
26
|
+
=end
|
27
|
+
|
1
28
|
require 'json'
|
2
29
|
|
3
30
|
module WampClient
|
data/lib/wamp_client/session.rb
CHANGED
@@ -1,3 +1,30 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Copyright (c) 2016 Eric Chapman
|
4
|
+
|
5
|
+
MIT License
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
8
|
+
a copy of this software and associated documentation files (the
|
9
|
+
"Software"), to deal in the Software without restriction, including
|
10
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
11
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
+
permit persons to whom the Software is furnished to do so, subject to
|
13
|
+
the following conditions:
|
14
|
+
|
15
|
+
The above copyright notice and this permission notice shall be
|
16
|
+
included in all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
19
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
21
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
22
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
23
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
24
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
25
|
+
|
26
|
+
=end
|
27
|
+
|
1
28
|
require 'wamp_client/transport'
|
2
29
|
require 'wamp_client/message'
|
3
30
|
require 'wamp_client/check'
|
@@ -22,7 +49,7 @@ module WampClient
|
|
22
49
|
shared_registration: true,
|
23
50
|
##call_timeout: true,
|
24
51
|
##call_canceling: true,
|
25
|
-
|
52
|
+
progressive_call_results: true,
|
26
53
|
registration_revocation: true
|
27
54
|
}
|
28
55
|
},
|
@@ -48,8 +75,18 @@ module WampClient
|
|
48
75
|
attr_accessor :args, :kwargs
|
49
76
|
|
50
77
|
def initialize(args=nil, kwargs=nil)
|
51
|
-
self.args = args
|
52
|
-
self.kwargs = kwargs
|
78
|
+
self.args = args || []
|
79
|
+
self.kwargs = kwargs || {}
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
class CallError < Exception
|
84
|
+
attr_accessor :error, :args, :kwargs
|
85
|
+
|
86
|
+
def initialize(error, args=nil, kwargs=nil)
|
87
|
+
self.error = error
|
88
|
+
self.args = args || []
|
89
|
+
self.kwargs = kwargs || {}
|
53
90
|
end
|
54
91
|
end
|
55
92
|
|
@@ -119,7 +156,7 @@ module WampClient
|
|
119
156
|
attr_accessor :id, :realm, :transport, :verbose, :options
|
120
157
|
|
121
158
|
# Private attributes
|
122
|
-
attr_accessor :_goodbye_sent, :_requests, :_subscriptions, :_registrations
|
159
|
+
attr_accessor :_goodbye_sent, :_requests, :_subscriptions, :_registrations, :_defers
|
123
160
|
|
124
161
|
# Constructor
|
125
162
|
# @param transport [WampClient::Transport::Base] The transport that the session will use
|
@@ -147,6 +184,7 @@ module WampClient
|
|
147
184
|
# Init Subs and Regs in place
|
148
185
|
self._subscriptions = {}
|
149
186
|
self._registrations = {}
|
187
|
+
self._defers = {}
|
150
188
|
|
151
189
|
# Setup Transport
|
152
190
|
self.transport = transport
|
@@ -623,20 +661,69 @@ module WampClient
|
|
623
661
|
begin
|
624
662
|
value = h.call(args, kwargs, details)
|
625
663
|
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
664
|
+
def send_error(request, error)
|
665
|
+
if error.nil?
|
666
|
+
error = CallError.new('wamp.error.runtime')
|
667
|
+
elsif not error.is_a?(CallError)
|
668
|
+
error = CallError.new('wamp.error.runtime', [error.to_s])
|
669
|
+
end
|
670
|
+
|
671
|
+
error_msg = WampClient::Message::Error.new(WampClient::Message::Types::INVOCATION, request, {}, error.error, error.args, error.kwargs)
|
672
|
+
self._send_message(error_msg)
|
673
|
+
end
|
674
|
+
|
675
|
+
def send_result(request, result, options={})
|
676
|
+
if result.nil?
|
677
|
+
result = CallResult.new
|
678
|
+
elsif result.is_a?(CallError)
|
679
|
+
# Do nothing
|
680
|
+
elsif not result.is_a?(CallResult)
|
681
|
+
result = CallResult.new([result])
|
682
|
+
end
|
683
|
+
|
684
|
+
if result.is_a?(CallError)
|
685
|
+
send_error(request, result)
|
686
|
+
else
|
687
|
+
yield_msg = WampClient::Message::Yield.new(request, options, result.args, result.kwargs)
|
688
|
+
self._send_message(yield_msg)
|
689
|
+
end
|
630
690
|
end
|
631
691
|
|
632
|
-
#
|
692
|
+
# If a defer was returned, handle accordingly
|
693
|
+
if value.is_a? WampClient::Defer::CallDefer
|
694
|
+
value.request = request
|
695
|
+
|
696
|
+
# Store the defer
|
697
|
+
self._defers[request] = value
|
698
|
+
|
699
|
+
# On complete, send the result
|
700
|
+
value.on_complete do |defer, result|
|
701
|
+
send_result(defer.request, result)
|
702
|
+
self._defers.delete(defer.request)
|
703
|
+
end
|
704
|
+
|
705
|
+
# On error, send the error
|
706
|
+
value.on_error do |defer, error|
|
707
|
+
send_error(defer.request, error)
|
708
|
+
self._defers.delete(defer.request)
|
709
|
+
end
|
710
|
+
|
711
|
+
# For progressive, return the progress
|
712
|
+
if value.is_a? WampClient::Defer::ProgressiveCallDefer
|
713
|
+
value.on_progress do |defer, result|
|
714
|
+
send_result(defer.request, result, {progress: true})
|
715
|
+
end
|
716
|
+
end
|
717
|
+
|
718
|
+
# Else it was a normal response
|
719
|
+
else
|
720
|
+
send_result(request, value)
|
721
|
+
end
|
633
722
|
|
634
|
-
|
635
|
-
|
636
|
-
rescue Exception => e
|
637
|
-
error = WampClient::Message::Error.new(WampClient::Message::Types::INVOCATION, request, {}, 'wamp.error.runtime', [e.to_s])
|
638
|
-
self._send_message(error)
|
723
|
+
rescue Exception => error
|
724
|
+
send_error(request, error)
|
639
725
|
end
|
726
|
+
|
640
727
|
end
|
641
728
|
end
|
642
729
|
end
|
@@ -1,3 +1,30 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Copyright (c) 2016 Eric Chapman
|
4
|
+
|
5
|
+
MIT License
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
8
|
+
a copy of this software and associated documentation files (the
|
9
|
+
"Software"), to deal in the Software without restriction, including
|
10
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
11
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
+
permit persons to whom the Software is furnished to do so, subject to
|
13
|
+
the following conditions:
|
14
|
+
|
15
|
+
The above copyright notice and this permission notice shall be
|
16
|
+
included in all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
19
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
21
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
22
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
23
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
24
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
25
|
+
|
26
|
+
=end
|
27
|
+
|
1
28
|
require 'wamp_client/serializer'
|
2
29
|
|
3
30
|
module WampClient
|
data/lib/wamp_client/version.rb
CHANGED
@@ -1,3 +1,30 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Copyright (c) 2016 Eric Chapman
|
4
|
+
|
5
|
+
MIT License
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
8
|
+
a copy of this software and associated documentation files (the
|
9
|
+
"Software"), to deal in the Software without restriction, including
|
10
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
11
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
+
permit persons to whom the Software is furnished to do so, subject to
|
13
|
+
the following conditions:
|
14
|
+
|
15
|
+
The above copyright notice and this permission notice shall be
|
16
|
+
included in all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
19
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
21
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
22
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
23
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
24
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
25
|
+
|
26
|
+
=end
|
27
|
+
|
1
28
|
module WampClient
|
2
|
-
VERSION = '0.0.
|
29
|
+
VERSION = '0.0.2'
|
3
30
|
end
|
data/spec/session_spec.rb
CHANGED
@@ -566,23 +566,43 @@ describe WampClient::Session do
|
|
566
566
|
welcome = WampClient::Message::Welcome.new(1234, {})
|
567
567
|
transport.receive_message(welcome.payload)
|
568
568
|
|
569
|
-
# Register
|
570
|
-
@response = 'response'
|
571
|
-
@throw_error = false
|
569
|
+
# Register Response
|
572
570
|
handler = lambda do |args, kwargs, details|
|
573
|
-
|
574
|
-
raise 'error' if @throw_error
|
575
|
-
|
576
571
|
@response
|
577
572
|
end
|
578
|
-
|
579
573
|
session.register('test.procedure', handler, {test: 1})
|
580
574
|
request_id = session._requests[:register].keys.first
|
581
|
-
|
582
|
-
# Generate server response
|
583
575
|
registered = WampClient::Message::Registered.new(request_id, 3456)
|
584
576
|
transport.receive_message(registered.payload)
|
585
577
|
|
578
|
+
# Defer Register
|
579
|
+
defer_handler = lambda do |args, kwargs, details|
|
580
|
+
@defer
|
581
|
+
end
|
582
|
+
session.register('test.defer.procedure', defer_handler)
|
583
|
+
|
584
|
+
request_id = session._requests[:register].keys.first
|
585
|
+
registered = WampClient::Message::Registered.new(request_id, 4567)
|
586
|
+
transport.receive_message(registered.payload)
|
587
|
+
|
588
|
+
# Register Error Response
|
589
|
+
handler = lambda do |args, kwargs, details|
|
590
|
+
raise 'error'
|
591
|
+
end
|
592
|
+
session.register('test.procedure.error', handler, {test: 1})
|
593
|
+
request_id = session._requests[:register].keys.first
|
594
|
+
registered = WampClient::Message::Registered.new(request_id, 5678)
|
595
|
+
transport.receive_message(registered.payload)
|
596
|
+
|
597
|
+
# Register Call Error Response
|
598
|
+
handler = lambda do |args, kwargs, details|
|
599
|
+
raise WampClient::CallError.new('test.error', ['error'])
|
600
|
+
end
|
601
|
+
session.register('test.procedure.call.error', handler, {test: 1})
|
602
|
+
request_id = session._requests[:register].keys.first
|
603
|
+
registered = WampClient::Message::Registered.new(request_id, 6789)
|
604
|
+
transport.receive_message(registered.payload)
|
605
|
+
|
586
606
|
transport.messages = []
|
587
607
|
end
|
588
608
|
|
@@ -620,7 +640,7 @@ describe WampClient::Session do
|
|
620
640
|
|
621
641
|
end
|
622
642
|
|
623
|
-
it '
|
643
|
+
it 'result response' do
|
624
644
|
|
625
645
|
@response = WampClient::CallResult.new(['test'], {test:1})
|
626
646
|
|
@@ -638,15 +658,120 @@ describe WampClient::Session do
|
|
638
658
|
|
639
659
|
end
|
640
660
|
|
641
|
-
it '
|
661
|
+
it 'raise error response' do
|
662
|
+
|
663
|
+
# Generate server event
|
664
|
+
invocation = WampClient::Message::Invocation.new(7890, 5678, {test:1}, [2], {param: 'value'})
|
665
|
+
transport.receive_message(invocation.payload)
|
666
|
+
|
667
|
+
# Check and make sure yield message was sent
|
668
|
+
expect(transport.messages.count).to eq(1)
|
669
|
+
expect(transport.messages[0][0]).to eq(WampClient::Message::Types::ERROR)
|
670
|
+
expect(transport.messages[0][1]).to eq(WampClient::Message::Types::INVOCATION)
|
671
|
+
expect(transport.messages[0][2]).to eq(7890)
|
672
|
+
expect(transport.messages[0][3]).to eq({})
|
673
|
+
expect(transport.messages[0][4]).to eq('wamp.error.runtime')
|
674
|
+
expect(transport.messages[0][5]).to eq(['error'])
|
675
|
+
|
676
|
+
end
|
677
|
+
|
678
|
+
it 'raise call error response' do
|
679
|
+
|
680
|
+
# Generate server event
|
681
|
+
invocation = WampClient::Message::Invocation.new(7890, 6789, {test:1}, [2], {param: 'value'})
|
682
|
+
transport.receive_message(invocation.payload)
|
683
|
+
|
684
|
+
# Check and make sure yield message was sent
|
685
|
+
expect(transport.messages.count).to eq(1)
|
686
|
+
expect(transport.messages[0][0]).to eq(WampClient::Message::Types::ERROR)
|
687
|
+
expect(transport.messages[0][1]).to eq(WampClient::Message::Types::INVOCATION)
|
688
|
+
expect(transport.messages[0][2]).to eq(7890)
|
689
|
+
expect(transport.messages[0][3]).to eq({})
|
690
|
+
expect(transport.messages[0][4]).to eq('test.error')
|
691
|
+
expect(transport.messages[0][5]).to eq(['error'])
|
692
|
+
|
693
|
+
end
|
694
|
+
|
695
|
+
it 'return error response' do
|
642
696
|
|
643
|
-
@
|
697
|
+
@response = WampClient::CallError.new('wamp.error.runtime', ['error'], {error: true})
|
644
698
|
|
645
699
|
# Generate server event
|
646
700
|
invocation = WampClient::Message::Invocation.new(7890, 3456, {test:1}, [2], {param: 'value'})
|
647
701
|
transport.receive_message(invocation.payload)
|
648
702
|
|
649
|
-
|
703
|
+
# Check and make sure yield message was sent
|
704
|
+
expect(transport.messages.count).to eq(1)
|
705
|
+
expect(transport.messages[0][0]).to eq(WampClient::Message::Types::ERROR)
|
706
|
+
expect(transport.messages[0][1]).to eq(WampClient::Message::Types::INVOCATION)
|
707
|
+
expect(transport.messages[0][2]).to eq(7890)
|
708
|
+
expect(transport.messages[0][3]).to eq({})
|
709
|
+
expect(transport.messages[0][4]).to eq('wamp.error.runtime')
|
710
|
+
expect(transport.messages[0][5]).to eq(['error'])
|
711
|
+
expect(transport.messages[0][6]).to eq({error: true})
|
712
|
+
|
713
|
+
end
|
714
|
+
|
715
|
+
it 'defer normal response' do
|
716
|
+
|
717
|
+
@response = WampClient::CallResult.new(['test'], {test:1})
|
718
|
+
|
719
|
+
@defer = WampClient::Defer::CallDefer.new
|
720
|
+
|
721
|
+
# Generate server event
|
722
|
+
invocation = WampClient::Message::Invocation.new(7890, 4567, {test:1}, [2], {param: 'value'})
|
723
|
+
transport.receive_message(invocation.payload)
|
724
|
+
|
725
|
+
expect(transport.messages.count).to eq(0)
|
726
|
+
|
727
|
+
@defer.succeed(@response)
|
728
|
+
|
729
|
+
# Check and make sure yield message was sent
|
730
|
+
expect(transport.messages.count).to eq(1)
|
731
|
+
expect(transport.messages[0][0]).to eq(WampClient::Message::Types::YIELD)
|
732
|
+
expect(transport.messages[0][1]).to eq(7890)
|
733
|
+
expect(transport.messages[0][2]).to eq({})
|
734
|
+
expect(transport.messages[0][3]).to eq(['test'])
|
735
|
+
expect(transport.messages[0][4]).to eq({test:1})
|
736
|
+
|
737
|
+
end
|
738
|
+
|
739
|
+
it 'defer error normal response' do
|
740
|
+
|
741
|
+
@defer = WampClient::Defer::CallDefer.new
|
742
|
+
|
743
|
+
# Generate server event
|
744
|
+
invocation = WampClient::Message::Invocation.new(7890, 4567, {test:1}, [2], {param: 'value'})
|
745
|
+
transport.receive_message(invocation.payload)
|
746
|
+
|
747
|
+
expect(transport.messages.count).to eq(0)
|
748
|
+
|
749
|
+
@defer.fail('error')
|
750
|
+
|
751
|
+
# Check and make sure yield message was sent
|
752
|
+
expect(transport.messages.count).to eq(1)
|
753
|
+
expect(transport.messages[0][0]).to eq(WampClient::Message::Types::ERROR)
|
754
|
+
expect(transport.messages[0][1]).to eq(WampClient::Message::Types::INVOCATION)
|
755
|
+
expect(transport.messages[0][2]).to eq(7890)
|
756
|
+
expect(transport.messages[0][3]).to eq({})
|
757
|
+
expect(transport.messages[0][4]).to eq('wamp.error.runtime')
|
758
|
+
expect(transport.messages[0][5]).to eq(['error'])
|
759
|
+
|
760
|
+
end
|
761
|
+
|
762
|
+
it 'defer error object response' do
|
763
|
+
|
764
|
+
@response = WampClient::CallError.new('wamp.error.runtime', ['error'], {error: true})
|
765
|
+
|
766
|
+
@defer = WampClient::Defer::CallDefer.new
|
767
|
+
|
768
|
+
# Generate server event
|
769
|
+
invocation = WampClient::Message::Invocation.new(7890, 4567, {test:1}, [2], {param: 'value'})
|
770
|
+
transport.receive_message(invocation.payload)
|
771
|
+
|
772
|
+
expect(transport.messages.count).to eq(0)
|
773
|
+
|
774
|
+
@defer.fail(@response)
|
650
775
|
|
651
776
|
# Check and make sure yield message was sent
|
652
777
|
expect(transport.messages.count).to eq(1)
|
@@ -656,6 +781,7 @@ describe WampClient::Session do
|
|
656
781
|
expect(transport.messages[0][3]).to eq({})
|
657
782
|
expect(transport.messages[0][4]).to eq('wamp.error.runtime')
|
658
783
|
expect(transport.messages[0][5]).to eq(['error'])
|
784
|
+
expect(transport.messages[0][6]).to eq({error: true})
|
659
785
|
|
660
786
|
end
|
661
787
|
end
|
@@ -936,6 +1062,106 @@ describe WampClient::Session do
|
|
936
1062
|
|
937
1063
|
end
|
938
1064
|
|
1065
|
+
it 'callee result support' do
|
1066
|
+
|
1067
|
+
# Defer Register
|
1068
|
+
@defer = WampClient::Defer::ProgressiveCallDefer.new
|
1069
|
+
defer_handler = lambda do |args, kwargs, details|
|
1070
|
+
@defer
|
1071
|
+
end
|
1072
|
+
session.register('test.defer.procedure', defer_handler)
|
1073
|
+
|
1074
|
+
request_id = session._requests[:register].keys.first
|
1075
|
+
registered = WampClient::Message::Registered.new(request_id, 4567)
|
1076
|
+
transport.receive_message(registered.payload)
|
1077
|
+
|
1078
|
+
transport.messages = []
|
1079
|
+
|
1080
|
+
# Generate server event
|
1081
|
+
invocation = WampClient::Message::Invocation.new(7890, 4567, {test:1}, [2], {param: 'value'})
|
1082
|
+
transport.receive_message(invocation.payload)
|
1083
|
+
|
1084
|
+
expect(transport.messages.count).to eq(0)
|
1085
|
+
expect(session._defers.count).to eq(1)
|
1086
|
+
|
1087
|
+
@defer.progress(WampClient::CallResult.new(['test1']))
|
1088
|
+
expect(session._defers.count).to eq(1)
|
1089
|
+
@defer.progress(WampClient::CallResult.new(['test2']))
|
1090
|
+
expect(session._defers.count).to eq(1)
|
1091
|
+
@defer.succeed(WampClient::CallResult.new(['test3']))
|
1092
|
+
expect(session._defers.count).to eq(0)
|
1093
|
+
|
1094
|
+
expect(transport.messages.count).to eq(3)
|
1095
|
+
|
1096
|
+
# Check and make sure yield message was sent
|
1097
|
+
expect(transport.messages[0][0]).to eq(WampClient::Message::Types::YIELD)
|
1098
|
+
expect(transport.messages[0][1]).to eq(7890)
|
1099
|
+
expect(transport.messages[0][2]).to eq({progress: true})
|
1100
|
+
expect(transport.messages[0][3]).to eq(['test1'])
|
1101
|
+
|
1102
|
+
expect(transport.messages[1][0]).to eq(WampClient::Message::Types::YIELD)
|
1103
|
+
expect(transport.messages[1][1]).to eq(7890)
|
1104
|
+
expect(transport.messages[1][2]).to eq({progress: true})
|
1105
|
+
expect(transport.messages[1][3]).to eq(['test2'])
|
1106
|
+
|
1107
|
+
expect(transport.messages.count).to eq(3)
|
1108
|
+
expect(transport.messages[2][0]).to eq(WampClient::Message::Types::YIELD)
|
1109
|
+
expect(transport.messages[2][1]).to eq(7890)
|
1110
|
+
expect(transport.messages[2][2]).to eq({})
|
1111
|
+
expect(transport.messages[2][3]).to eq(['test3'])
|
1112
|
+
|
1113
|
+
end
|
1114
|
+
|
1115
|
+
it 'callee error support' do
|
1116
|
+
|
1117
|
+
# Defer Register
|
1118
|
+
@defer = WampClient::Defer::ProgressiveCallDefer.new
|
1119
|
+
defer_handler = lambda do |args, kwargs, details|
|
1120
|
+
@defer
|
1121
|
+
end
|
1122
|
+
session.register('test.defer.procedure', defer_handler)
|
1123
|
+
|
1124
|
+
request_id = session._requests[:register].keys.first
|
1125
|
+
registered = WampClient::Message::Registered.new(request_id, 4567)
|
1126
|
+
transport.receive_message(registered.payload)
|
1127
|
+
|
1128
|
+
transport.messages = []
|
1129
|
+
|
1130
|
+
# Generate server event
|
1131
|
+
invocation = WampClient::Message::Invocation.new(7890, 4567, {test:1}, [2], {param: 'value'})
|
1132
|
+
transport.receive_message(invocation.payload)
|
1133
|
+
|
1134
|
+
expect(transport.messages.count).to eq(0)
|
1135
|
+
expect(session._defers.count).to eq(1)
|
1136
|
+
|
1137
|
+
@defer.progress(WampClient::CallResult.new(['test1']))
|
1138
|
+
expect(session._defers.count).to eq(1)
|
1139
|
+
@defer.progress(WampClient::CallResult.new(['test2']))
|
1140
|
+
expect(session._defers.count).to eq(1)
|
1141
|
+
@defer.fail(WampClient::CallError.new('test.error'))
|
1142
|
+
expect(session._defers.count).to eq(0)
|
1143
|
+
|
1144
|
+
expect(transport.messages.count).to eq(3)
|
1145
|
+
|
1146
|
+
# Check and make sure yield message was sent
|
1147
|
+
expect(transport.messages[0][0]).to eq(WampClient::Message::Types::YIELD)
|
1148
|
+
expect(transport.messages[0][1]).to eq(7890)
|
1149
|
+
expect(transport.messages[0][2]).to eq({progress: true})
|
1150
|
+
expect(transport.messages[0][3]).to eq(['test1'])
|
1151
|
+
|
1152
|
+
expect(transport.messages[1][0]).to eq(WampClient::Message::Types::YIELD)
|
1153
|
+
expect(transport.messages[1][1]).to eq(7890)
|
1154
|
+
expect(transport.messages[1][2]).to eq({progress: true})
|
1155
|
+
expect(transport.messages[1][3]).to eq(['test2'])
|
1156
|
+
|
1157
|
+
expect(transport.messages[2][0]).to eq(WampClient::Message::Types::ERROR)
|
1158
|
+
expect(transport.messages[2][1]).to eq(WampClient::Message::Types::INVOCATION)
|
1159
|
+
expect(transport.messages[2][2]).to eq(7890)
|
1160
|
+
expect(transport.messages[2][3]).to eq({})
|
1161
|
+
expect(transport.messages[2][4]).to eq('test.error')
|
1162
|
+
|
1163
|
+
end
|
1164
|
+
|
939
1165
|
end
|
940
1166
|
|
941
1167
|
describe 'auth' do
|
data/spec/spec_helper.rb
CHANGED
@@ -3,8 +3,10 @@ SimpleCov.start
|
|
3
3
|
|
4
4
|
require_relative '../lib/wamp_client'
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
if ENV['CODECOV_TOKEN']
|
7
|
+
require 'codecov'
|
8
|
+
SimpleCov.formatter = SimpleCov::Formatter::Codecov
|
9
|
+
end
|
8
10
|
|
9
11
|
require 'wamp_client'
|
10
12
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wamp_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Chapman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -125,6 +125,7 @@ files:
|
|
125
125
|
- lib/wamp_client/auth.rb
|
126
126
|
- lib/wamp_client/check.rb
|
127
127
|
- lib/wamp_client/connection.rb
|
128
|
+
- lib/wamp_client/defer.rb
|
128
129
|
- lib/wamp_client/message.rb
|
129
130
|
- lib/wamp_client/serializer.rb
|
130
131
|
- lib/wamp_client/session.rb
|