ruby_rabbitmq_janus 1.2.3.pre.53 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +28 -31
- data/config/requests/peer/offer.json +2 -2
- data/lib/rrj/errors/init.rb +1 -1
- data/lib/rrj/errors/rabbit/rabbit.rb +0 -14
- data/lib/rrj/info.rb +0 -14
- data/lib/rrj/janus/processus/event.rb +1 -4
- data/lib/rrj/janus/processus/keepalive.rb +13 -19
- data/lib/rrj/janus/transactions/admin.rb +4 -10
- data/lib/rrj/janus/transactions/handle.rb +3 -8
- data/lib/rrj/janus/transactions/transaction.rb +13 -14
- data/lib/rrj/rabbit/publish/admin.rb +1 -1
- data/lib/rrj/rabbit/publish/exclusive.rb +1 -8
- data/lib/rrj/rabbit/publish/non_exclusive.rb +1 -1
- data/lib/rrj/rabbit/publish/publisher.rb +1 -3
- data/lib/rrj/tools/config.rb +0 -2
- data/lib/rrj/tools/replaces/standard.rb +1 -1
- data/lib/rrj/tools/replaces/type.rb +0 -10
- data/spec/request/peer/request_answer_spec.rb +66 -0
- data/spec/request/peer/request_offer_spec.rb +5 -3
- data/spec/rrj/rrj_config_spec.rb +1 -1
- data/spec/rrj/rrj_spec.rb +10 -36
- data/spec/support/{examples_request.rb → examples.rb} +0 -17
- data/spec/support/examples_peer.rb +18 -0
- data/spec/support/schemas/request/channel/create.json +39 -0
- data/spec/support/schemas/request/channel/destroy.json +39 -0
- data/spec/support/schemas/request/channel/exist.json +41 -0
- data/spec/support/schemas/request/channel/list.json +37 -0
- data/spec/support/schemas/request/peer/answer.json +4 -2
- data/spec/support/schemas/request/peer/offer.json +4 -2
- metadata +14 -22
- data/spec/fixtures/config/requests/admin/handle_info.json +0 -3
- data/spec/fixtures/config/requests/admin/handles.json +0 -3
- data/spec/fixtures/config/requests/admin/log_level.json +0 -3
- data/spec/fixtures/config/requests/admin/sessions.json +0 -3
- data/spec/fixtures/config/requests/base/attach.json +0 -3
- data/spec/fixtures/config/requests/base/create.json +0 -4
- data/spec/fixtures/config/requests/base/destroy.json +0 -3
- data/spec/fixtures/config/requests/base/detach.json +0 -3
- data/spec/fixtures/config/requests/base/info.json +0 -3
- data/spec/fixtures/config/requests/base/keepalive.json +0 -3
- data/spec/fixtures/config/requests/peer/answer.json +0 -3
- data/spec/fixtures/config/requests/peer/offer.json +0 -3
- data/spec/fixtures/config/requests/peer/trickle.json +0 -3
- data/spec/support/examples_config.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d1ffd3bf9b6fe114af2808fa4bff38fcb9793d7
|
4
|
+
data.tar.gz: c8b7e0025337cb7458ceaf785116abc3db07df5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 436f8a3cd02de4b1905898ee4bf744a86ca5c3ae2dab7964d35038a5923a919042ffae5b8e623ce1406cbc037198cb5d804822f65388f24f815e8dbbcd860bea
|
7
|
+
data.tar.gz: cad78ce33154b8c3fe54dc6883e8fffe6bf9c3ad16bd9970a3880b13782ca37b42803af97096e31d408cdeaf68ed0f4708038c5b85fc0c63d56df4a15ed72951
|
data/README.md
CHANGED
@@ -6,11 +6,11 @@
|
|
6
6
|
|
7
7
|
Ruby Gem for Janus WebRTC Gateway integration using RabbitMQ message queue
|
8
8
|
|
9
|
-
This gem is used to communicate to a server Janus through RabbitMQ software
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
This gem is used to communicate to a server Janus through RabbitMQ software (
|
10
|
+
Message-oriented middleware). It waiting a messages to Rails API who send to RabbitMQ
|
11
|
+
server in a queue for janus server. janus processes a message and send to RabbitMQ server
|
12
|
+
in a queue for gem. Once the received message is decoded and returned through the Rails API.
|
13
|
+
|
14
14
|
|
15
15
|
This gem is product by [Dazzl.tv](http://dazzl.tv)
|
16
16
|
|
@@ -48,11 +48,17 @@ Use generator for complete installation :
|
|
48
48
|
```ruby
|
49
49
|
rails g -h
|
50
50
|
RubyRabbitmqJanus:
|
51
|
-
ruby_rabbitmq_janus:configuration
|
52
|
-
|
53
|
-
|
54
|
-
ruby_rabbitmq_janus:
|
55
|
-
|
51
|
+
ruby_rabbitmq_janus:configuration
|
52
|
+
# Generate a custom configuration file.
|
53
|
+
|
54
|
+
ruby_rabbitmq_janus:default_request
|
55
|
+
# Copy base request file sending to janus in application. It's necessary if you want add your request.
|
56
|
+
|
57
|
+
ruby_rabbitmq_janus:initializer
|
58
|
+
# Generate a initializer to this gem for rails application.
|
59
|
+
|
60
|
+
ruby_rabbitmq_janus:create_request
|
61
|
+
# Create an request to json format for RubyRabbitmqJanus transaction.
|
56
62
|
```
|
57
63
|
|
58
64
|
#### Requests
|
@@ -84,27 +90,18 @@ rabbitmq and use plugin echotest for janus server.
|
|
84
90
|
|
85
91
|
Use tags for rspec :
|
86
92
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
| Test request type create | | create |
|
100
|
-
| Test request type detach | | detach |
|
101
|
-
| Test request type info | | info |
|
102
|
-
| Test request type test | | test |
|
103
|
-
|
104
|
-
Example usage rspec with tags :
|
105
|
-
```ruby
|
106
|
-
rspec --tag --name:config --tag level:base
|
107
|
-
```
|
93
|
+
| type | name |
|
94
|
+
| --------------- | --------------- |
|
95
|
+
| request | attach |
|
96
|
+
| | create |
|
97
|
+
| | detach |
|
98
|
+
| | info |
|
99
|
+
| | test |
|
100
|
+
| level | base |
|
101
|
+
| | admin |
|
102
|
+
| config | rabbit |
|
103
|
+
| | log |
|
104
|
+
| | config |
|
108
105
|
|
109
106
|
## Upgrade
|
110
107
|
|
data/lib/rrj/errors/init.rb
CHANGED
@@ -15,7 +15,7 @@ module RubyRabbitmqJanus
|
|
15
15
|
end
|
16
16
|
|
17
17
|
# Define an exception if gem dont initialize correctly
|
18
|
-
class
|
18
|
+
class InstaciateGemFailed < RRJ
|
19
19
|
# Initialize a error for instanciate class. It's a fatal error
|
20
20
|
# @param [String] message Text returning in raise
|
21
21
|
def initialize(message)
|
@@ -11,19 +11,5 @@ module RubyRabbitmqJanus
|
|
11
11
|
super message, :fatal
|
12
12
|
end
|
13
13
|
end
|
14
|
-
|
15
|
-
# Execpetion primary for Rabbit class
|
16
|
-
class Rabbit < RRJError
|
17
|
-
def initialize(message)
|
18
|
-
super "[Rabbit]#{message}", :fatal
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
# Send exception when publish a message to rabbitmq failed
|
23
|
-
class RabbitPublishMessage < Rabbit
|
24
|
-
def initialize(message, request)
|
25
|
-
super "[Publish] #{message} -- #{request}"
|
26
|
-
end
|
27
|
-
end
|
28
14
|
end
|
29
15
|
end
|
data/lib/rrj/info.rb
CHANGED
@@ -1,24 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# :reek:TooManyConstants
|
3
|
-
|
4
2
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
5
3
|
# Define constant to gem.
|
6
4
|
module RubyRabbitmqJanus
|
7
5
|
# Define version to gem
|
8
6
|
VERSION = '1.2.3'
|
9
7
|
|
10
|
-
# Name to gem
|
11
|
-
GEM_NAME = 'ruby_rabbitmq_janus'
|
12
|
-
|
13
|
-
# Authors
|
14
|
-
AUTHORS = ['VAILLANT Jeremy'].freeze
|
15
|
-
|
16
|
-
# Emails
|
17
|
-
EMAILS = ['jeremy@dazzl.tv'].freeze
|
18
|
-
|
19
|
-
# Licence
|
20
|
-
LICENSE = 'MIT'
|
21
|
-
|
22
8
|
# Define a summary description to gem
|
23
9
|
SUMMARY = 'Ruby RabbitMQ Janus'
|
24
10
|
|
@@ -16,10 +16,7 @@ module RubyRabbitmqJanus
|
|
16
16
|
|
17
17
|
# Create a thred for execute a block code in a thread
|
18
18
|
#
|
19
|
-
# @
|
20
|
-
# standard 'from-janus' receive a message.
|
21
|
-
#
|
22
|
-
# @return [Thread] It's a thread who listen queue and execute action
|
19
|
+
# @yield Send to publisher the actions when a Janus event is received
|
23
20
|
def run(&block)
|
24
21
|
thread.join
|
25
22
|
Thread.new do
|
@@ -14,7 +14,7 @@ module RubyRabbitmqJanus
|
|
14
14
|
|
15
15
|
# Create a thread
|
16
16
|
def initialize
|
17
|
-
@response = @
|
17
|
+
@response = @publish = nil
|
18
18
|
super
|
19
19
|
end
|
20
20
|
|
@@ -30,30 +30,24 @@ module RubyRabbitmqJanus
|
|
30
30
|
|
31
31
|
def transaction_running
|
32
32
|
@response = Janus::Responses::Standard.new(create_session)
|
33
|
-
synchronize
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
end
|
38
|
-
|
39
|
-
def synchronize
|
40
|
-
lock.synchronize { condition.signal }
|
41
|
-
end
|
42
|
-
|
43
|
-
def create_loop_session
|
44
|
-
loop { loop_session(Tools::Config.instance.ttl) }
|
33
|
+
lock.synchronize do
|
34
|
+
condition.signal
|
35
|
+
end
|
36
|
+
loop_session(Tools::Config.instance.ttl)
|
45
37
|
end
|
46
38
|
|
47
39
|
def loop_session(time_to_live)
|
48
|
-
|
49
|
-
|
50
|
-
|
40
|
+
loop do
|
41
|
+
sleep time_to_live
|
42
|
+
@publish.send_a_message(message_keepalive)
|
43
|
+
end
|
44
|
+
rescue => error
|
45
|
+
raise Errors::KeepaliveLoopSession, error
|
51
46
|
end
|
52
47
|
|
53
48
|
def create_session
|
54
|
-
@
|
55
|
-
|
56
|
-
@publisher.publish(Janus::Messages::Standard.new('base::create'))
|
49
|
+
@publish = Rabbit::Publisher::PublishExclusive.new(rabbit.channel, '')
|
50
|
+
@publish.send_a_message(Janus::Messages::Standard.new('base::create'))
|
57
51
|
rescue => error
|
58
52
|
raise Errors::KeepaliveCreateSession, error
|
59
53
|
end
|
@@ -8,13 +8,6 @@ module RubyRabbitmqJanus
|
|
8
8
|
# This class work with janus and send a series of message
|
9
9
|
class Admin < Handle
|
10
10
|
# Publish an message in handle
|
11
|
-
#
|
12
|
-
# @param [String] type
|
13
|
-
# Given a type to request. JSON request writing in 'config/requests/'
|
14
|
-
# @param [Hash] options Replace/add element to request
|
15
|
-
#
|
16
|
-
# @return [Janus::Response::Standard] a response to message pusblishing
|
17
|
-
# in queue Admin API
|
18
11
|
def publish_message_handle(type, options)
|
19
12
|
opts = {
|
20
13
|
'session_id' => session,
|
@@ -22,7 +15,8 @@ module RubyRabbitmqJanus
|
|
22
15
|
'admin_secret' => admin_secret
|
23
16
|
}
|
24
17
|
msg = Janus::Messages::Admin.new(type, opts.merge!(options))
|
25
|
-
|
18
|
+
publisher = publish.send_a_message(msg)
|
19
|
+
Janus::Responses::Standard.new(read_response(publisher))
|
26
20
|
end
|
27
21
|
|
28
22
|
private
|
@@ -30,13 +24,13 @@ module RubyRabbitmqJanus
|
|
30
24
|
# Define queue used for admin message
|
31
25
|
def choose_queue
|
32
26
|
chan = rabbit.channel
|
33
|
-
@
|
27
|
+
@publish = Rabbit::Publisher::PublisherAdmin.new(chan)
|
34
28
|
end
|
35
29
|
|
36
30
|
# Override method for publishing an message and reading a response
|
37
31
|
def send_a_message
|
38
32
|
Tools::Log.instance.info 'Publish a message ...'
|
39
|
-
Janus::Responses::Standard.new(
|
33
|
+
Janus::Responses::Standard.new(publish.send_a_message(yield))
|
40
34
|
end
|
41
35
|
|
42
36
|
# Read a admin pass in configuration file to this gem
|
@@ -33,16 +33,11 @@ module RubyRabbitmqJanus
|
|
33
33
|
end
|
34
34
|
|
35
35
|
# Publish an message in handle
|
36
|
-
#
|
37
|
-
# @param [String] type Request file used
|
38
|
-
# @param [Hash] options Replace/add element in request
|
39
|
-
#
|
40
|
-
# @return [Janus::Responses::Standard] Response to message sending
|
41
36
|
def publish_message_handle(type, options)
|
42
37
|
opts = { 'session_id' => session, 'handle_id' => handle }
|
43
38
|
msg = Janus::Messages::Standard.new(type, opts.merge!(options))
|
44
|
-
|
45
|
-
Janus::Responses::Standard.new(
|
39
|
+
publisher = publish.send_a_message(msg)
|
40
|
+
Janus::Responses::Standard.new(read_response(publisher))
|
46
41
|
end
|
47
42
|
|
48
43
|
private
|
@@ -66,7 +61,7 @@ module RubyRabbitmqJanus
|
|
66
61
|
def read_response_exclusive
|
67
62
|
chan = rabbit.channel
|
68
63
|
tmp_publish = Rabbit::Publisher::PublishExclusive.new(chan, '')
|
69
|
-
tmp_publish.
|
64
|
+
tmp_publish.send_a_message(yield)
|
70
65
|
end
|
71
66
|
end
|
72
67
|
end
|
@@ -16,33 +16,32 @@ module RubyRabbitmqJanus
|
|
16
16
|
def initialize(session)
|
17
17
|
@rabbit = Rabbit::Connect.new
|
18
18
|
@session = session
|
19
|
-
@
|
19
|
+
@publish = @exclusive = nil
|
20
20
|
rescue => error
|
21
21
|
raise Errors::JanusTransaction, error
|
22
22
|
end
|
23
23
|
|
24
24
|
private
|
25
25
|
|
26
|
-
attr_reader :rabbit, :session, :response, :handle, :
|
27
|
-
:exclusive
|
26
|
+
attr_reader :rabbit, :session, :response, :handle, :publish, :exclusive
|
28
27
|
|
29
28
|
def choose_queue
|
30
29
|
chan = @rabbit.channel
|
31
|
-
@
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
30
|
+
@publish = if @exclusive
|
31
|
+
Tools::Log.instance.debug \
|
32
|
+
'Choose an queue Exclusive : ampq.gen-xxx'
|
33
|
+
Rabbit::Publisher::PublishExclusive.new(chan, '')
|
34
|
+
else
|
35
|
+
Tools::Log.instance.debug \
|
36
|
+
'Choose an queue non Exclusive : to-janus'
|
37
|
+
Rabbit::Publisher::PublishNonExclusive.new(chan)
|
38
|
+
end
|
40
39
|
end
|
41
40
|
|
42
41
|
def send_a_message
|
43
42
|
Tools::Log.instance.info 'Publish a message ...'
|
44
|
-
|
45
|
-
Janus::Responses::Standard.new(
|
43
|
+
publish = @publish.send_a_message(yield)
|
44
|
+
Janus::Responses::Standard.new(read_response(publish))
|
46
45
|
end
|
47
46
|
|
48
47
|
def read_response(publish)
|
@@ -4,15 +4,8 @@ module RubyRabbitmqJanus
|
|
4
4
|
module Rabbit
|
5
5
|
module Publisher
|
6
6
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
7
|
-
# # Publish message
|
8
|
-
#
|
9
|
-
# Publish message in queue exclusive. Bunny create automaticaly a name for
|
10
|
-
# this queue. The queue name like to 'amq.gen-1A456DGVHDVUS'.
|
11
7
|
class PublishExclusive < Publisher
|
12
8
|
# Initialize an queue exclusive and generated automaticaly by bunny
|
13
|
-
#
|
14
|
-
# @param [String] exchange Exchange used for the transaction
|
15
|
-
# @param [String] name_queue Name to queue exclusive
|
16
9
|
def initialize(exchange, name_queue)
|
17
10
|
@reply = exchange.queue(name_queue, exclusive: true)
|
18
11
|
super(exchange)
|
@@ -20,7 +13,7 @@ module RubyRabbitmqJanus
|
|
20
13
|
end
|
21
14
|
|
22
15
|
# Send an message to queue and waiting a response
|
23
|
-
def
|
16
|
+
def send_a_message(request)
|
24
17
|
super(request)
|
25
18
|
return_response
|
26
19
|
end
|
@@ -18,13 +18,11 @@ module RubyRabbitmqJanus
|
|
18
18
|
end
|
19
19
|
|
20
20
|
# Publish an message in queue
|
21
|
-
def
|
21
|
+
def send_a_message(request)
|
22
22
|
Tools::Log.instance.info "Send request type : #{request.type}"
|
23
23
|
@message = request
|
24
24
|
@exchange.publish(@message.to_json,
|
25
25
|
request.options.merge!(reply_to: queue_name))
|
26
|
-
rescue => error
|
27
|
-
raise Errors::RabbitPublishMessage, error, request
|
28
26
|
end
|
29
27
|
|
30
28
|
private
|
data/lib/rrj/tools/config.rb
CHANGED
@@ -32,7 +32,7 @@ module RubyRabbitmqJanus
|
|
32
32
|
|
33
33
|
# Replace sdp in request
|
34
34
|
def replace_sdp
|
35
|
-
request['jsep']['sdp'] = opts['replace']['sdp']
|
35
|
+
request['jsep']['sdp'] = opts['replace']['sdp']
|
36
36
|
rescue => message
|
37
37
|
Tools::Log.instance.warn "Error sdp replace : #{message}"
|
38
38
|
end
|
@@ -17,7 +17,6 @@ module RubyRabbitmqJanus
|
|
17
17
|
case @request[key]
|
18
18
|
when '<string>' then convert_to_type_string
|
19
19
|
when '<number>' then convert_to_type_number
|
20
|
-
when '<boolean>' then convert_to_type_boolean
|
21
20
|
end
|
22
21
|
end
|
23
22
|
|
@@ -32,15 +31,6 @@ module RubyRabbitmqJanus
|
|
32
31
|
def convert_to_type_number
|
33
32
|
@data.to_i
|
34
33
|
end
|
35
|
-
|
36
|
-
# Convert a data to Boolean type
|
37
|
-
def convert_to_type_boolean
|
38
|
-
if @data.casecmp('TRUE')
|
39
|
-
true
|
40
|
-
elsif @data.casecmp('FALSE')
|
41
|
-
false
|
42
|
-
end
|
43
|
-
end
|
44
34
|
end
|
45
35
|
end
|
46
36
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe 'RubyRabbitmqJanus::RRJ -- message type answer', broken: true do
|
6
|
+
before(:example) do
|
7
|
+
sdp = <<END
|
8
|
+
v=0
|
9
|
+
o=- 7041456084360858977 2 IN IP4 127.0.0.1
|
10
|
+
s=-
|
11
|
+
t=0 0
|
12
|
+
a=group:BUNDLE audio video
|
13
|
+
a=msid-semantic: WMS 2jKToeOlpzKTn7anwnHOJmzFyhvEYt1kpcMY
|
14
|
+
m=audio 9 UDP/TLS/RTP/SAVPF 111
|
15
|
+
c=IN IP4 0.0.0.0
|
16
|
+
a=rtcp:9 IN IP4 0.0.0.0
|
17
|
+
a=ice-ufrag:T9QI
|
18
|
+
a=ice-pwd:s9YvfGuavTZN0Lqc53JNInEP
|
19
|
+
a=fingerprint:sha-256 6D:ED:BC:93:AC:EC:C2:29:03:7D:6A:60:9F:D3:F5:A1:6D:1A:38:CE:F0:C0:EC:C8:5D:87:19:19:BE:0F:89:BB
|
20
|
+
a=setup:actpass
|
21
|
+
a=mid:audio
|
22
|
+
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
|
23
|
+
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
|
24
|
+
a=sendonly
|
25
|
+
a=rtcp-mux
|
26
|
+
a=rtpmap:111 opus/48000/2
|
27
|
+
a=rtcp-fb:111 transport-cc
|
28
|
+
a=fmtp:111 minptime=10;useinbandfec=1
|
29
|
+
m=video 9 UDP/TLS/RTP/SAVPF 100
|
30
|
+
c=IN IP4 0.0.0.0
|
31
|
+
a=rtcp:9 IN IP4 0.0.0.0
|
32
|
+
a=ice-ufrag:T9QI
|
33
|
+
a=ice-pwd:s9YvfGuavTZN0Lqc53JNInEP
|
34
|
+
a=fingerprint:sha-256 6D:ED:BC:93:AC:EC:C2:29:03:7D:6A:60:9F:D3:F5:A1:6D:1A:38:CE:F0:C0:EC:C8:5D:87:19:19:BE:0F:89:BB
|
35
|
+
a=setup:actpass
|
36
|
+
a=mid:video
|
37
|
+
a=extmap:2 urn:ietf:params:rtp-hdrext:toffset
|
38
|
+
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
|
39
|
+
a=extmap:4 urn:3gpp:video-orientation
|
40
|
+
a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
|
41
|
+
a=sendonly
|
42
|
+
a=rtcp-mux
|
43
|
+
a=rtcp-rsize
|
44
|
+
a=rtpmap:100 VP8/90000
|
45
|
+
a=rtcp-fb:100 ccm fir
|
46
|
+
a=rtcp-fb:100 nack
|
47
|
+
a=rtcp-fb:100 nack pli
|
48
|
+
a=rtcp-fb:100 goog-remb
|
49
|
+
a=rtcp-fb:100 transport-cc
|
50
|
+
END
|
51
|
+
@type = 'peer::answer'
|
52
|
+
@options = { 'replace' => { 'sdp' => sdp }, 'add' => {} }
|
53
|
+
end
|
54
|
+
|
55
|
+
describe '#message_handle', type: :request, level: :peer, name: :answer do
|
56
|
+
context 'when queue is exclusive' do
|
57
|
+
it_behaves_like 'message_handle should match json schema'
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'when queue is not exclusive' do
|
61
|
+
it_behaves_like 'message_handle should match json empty'
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
after(:example) { @gateway.handle_message_simple('base::detach') }
|
66
|
+
end
|
@@ -2,13 +2,13 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
describe 'RubyRabbitmqJanus::RRJ -- message type offer' do
|
5
|
+
describe 'RubyRabbitmqJanus::RRJ -- message type offer', broken: true do
|
6
6
|
before(:example) do
|
7
7
|
sdp = <<END
|
8
8
|
v=0
|
9
9
|
o=- 7041456084360858977 2 IN IP4 127.0.0.1
|
10
10
|
s=-
|
11
|
-
t=0 0
|
11
|
+
t=0 0
|
12
12
|
a=group:BUNDLE audio video
|
13
13
|
a=msid-semantic: WMS 2jKToeOlpzKTn7anwnHOJmzFyhvEYt1kpcMY
|
14
14
|
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 126
|
@@ -94,10 +94,12 @@ a=ssrc:258141567 mslabel:2jKToeOlpzKTn7anwnHOJmzFyhvEYt1kpcMY
|
|
94
94
|
a=ssrc:258141567 label:25d58816-114a-41d2-aa08-1039e09f942f
|
95
95
|
END
|
96
96
|
@type = 'peer::offer'
|
97
|
-
@options = { 'replace' => { 'sdp' => sdp
|
97
|
+
@options = { 'replace' => { 'sdp' => sdp }, 'add' => {} }
|
98
98
|
end
|
99
99
|
|
100
100
|
describe '#message_handle', type: :request, level: :peer, name: :offer do
|
101
|
+
let(:sdp) { 'v=0\r\no=[..more sdp stuff..]' }
|
102
|
+
|
101
103
|
context 'when queue is exclusive' do
|
102
104
|
it_behaves_like 'message_handle should match json schema'
|
103
105
|
end
|
data/spec/rrj/rrj_config_spec.rb
CHANGED
@@ -21,7 +21,7 @@ describe RubyRabbitmqJanus::Tools::Config, type: :config, name: :config do
|
|
21
21
|
expect(@cfg.plugin_at).to be_a(String)
|
22
22
|
end
|
23
23
|
|
24
|
-
it 'When janus/plugins/0
|
24
|
+
it 'When janus/plugins/0 defualt value is lading' do
|
25
25
|
expect(@cfg.plugin_at).to eq 'janus.plugin.echotest'
|
26
26
|
end
|
27
27
|
|
data/spec/rrj/rrj_spec.rb
CHANGED
@@ -3,49 +3,23 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe 'RubyRabbitmqJanus::RRJ', type: :config, name: :describe do
|
6
|
-
|
7
|
-
|
8
|
-
it_behaves_like 'constant is', String
|
6
|
+
it 'Has a version number' do
|
7
|
+
expect(RubyRabbitmqJanus::VERSION).not_to be nil
|
9
8
|
end
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
it_behaves_like 'constant is', String
|
10
|
+
it 'Has a description' do
|
11
|
+
expect(RubyRabbitmqJanus::DESCRIPTION).not_to be nil
|
14
12
|
end
|
15
13
|
|
16
|
-
|
17
|
-
|
18
|
-
it_behaves_like 'constant is', Array
|
14
|
+
it 'Has a summary description' do
|
15
|
+
expect(RubyRabbitmqJanus::SUMMARY).not_to be nil
|
19
16
|
end
|
20
17
|
|
21
|
-
|
22
|
-
|
23
|
-
it_behaves_like 'constant is', Array
|
18
|
+
it 'Has a homepage' do
|
19
|
+
expect(RubyRabbitmqJanus::HOMEPAGE).not_to be nil
|
24
20
|
end
|
25
21
|
|
26
|
-
|
27
|
-
|
28
|
-
it_behaves_like 'constant is', String
|
29
|
-
it { expect('../../LICENSE').to be_an_existing_file }
|
30
|
-
end
|
31
|
-
|
32
|
-
context 'Has a description' do
|
33
|
-
let(:data) { RubyRabbitmqJanus::DESCRIPTION }
|
34
|
-
it_behaves_like 'constant is', String
|
35
|
-
end
|
36
|
-
|
37
|
-
context 'Has a summary description' do
|
38
|
-
let(:data) { RubyRabbitmqJanus::SUMMARY }
|
39
|
-
it_behaves_like 'constant is', String
|
40
|
-
end
|
41
|
-
|
42
|
-
context 'Has a homepage' do
|
43
|
-
let(:data) { RubyRabbitmqJanus::HOMEPAGE }
|
44
|
-
it_behaves_like 'constant is', String
|
45
|
-
end
|
46
|
-
|
47
|
-
context 'Has a post install message' do
|
48
|
-
let(:data) { RubyRabbitmqJanus::POST_INSTALL }
|
49
|
-
it_behaves_like 'constant is', String
|
22
|
+
it 'Has a post install message' do
|
23
|
+
expect(RubyRabbitmqJanus::POST_INSTALL).not_to be nil
|
50
24
|
end
|
51
25
|
end
|
@@ -78,20 +78,3 @@ shared_examples 'message_admin should match json schema' do
|
|
78
78
|
expect(message.to_json).to match_json_schema(@type)
|
79
79
|
end
|
80
80
|
end
|
81
|
-
|
82
|
-
# Simple request
|
83
|
-
shared_examples 'peer message_simple should match json empty' do
|
84
|
-
let(:message) { @gateway.message_simple(@type) }
|
85
|
-
|
86
|
-
it 'should match JSON empty' do
|
87
|
-
expect(message.to_json).to eq('{}')
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
shared_examples 'peer message_simple should match json schema' do
|
92
|
-
let(:message) { @gateway.message_simple(@type, true) }
|
93
|
-
|
94
|
-
it do
|
95
|
-
expect(message.to_json).to match_json_schema(@type)
|
96
|
-
end
|
97
|
-
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Simple request
|
4
|
+
shared_examples 'peer message_simple should match json empty' do
|
5
|
+
let(:message) { @gateway.message_simple(@type) }
|
6
|
+
|
7
|
+
it 'should match JSON empty' do
|
8
|
+
expect(message.to_json).to eq('{}')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
shared_examples 'peer message_simple should match json schema' do
|
13
|
+
let(:message) { @gateway.message_simple(@type, true) }
|
14
|
+
|
15
|
+
it do
|
16
|
+
expect(message.to_json).to match_json_schema(@type)
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
{
|
2
|
+
"type": "object",
|
3
|
+
"properties": {
|
4
|
+
"janus": { "type": "string", "pattern": "success" },
|
5
|
+
"session_id": { "type": "integer" },
|
6
|
+
"transaction": { "type": "string" },
|
7
|
+
"sender": { "type": "integer" },
|
8
|
+
"plugindata": {
|
9
|
+
"type": "hash",
|
10
|
+
"properties": {
|
11
|
+
"data": {
|
12
|
+
"type": "hash",
|
13
|
+
"properties": {
|
14
|
+
"videocontrol": { "type": "string", "pattern": "created" },
|
15
|
+
"channel": { "type": "integer"}
|
16
|
+
},
|
17
|
+
"required": [
|
18
|
+
"videocontrol",
|
19
|
+
"channel"
|
20
|
+
]
|
21
|
+
},
|
22
|
+
"plugin": {
|
23
|
+
"type": "string"
|
24
|
+
}
|
25
|
+
},
|
26
|
+
"required": [
|
27
|
+
"plugin",
|
28
|
+
"data"
|
29
|
+
]
|
30
|
+
}
|
31
|
+
},
|
32
|
+
"required": [
|
33
|
+
"janus",
|
34
|
+
"session_id",
|
35
|
+
"sender",
|
36
|
+
"transaction",
|
37
|
+
"plugindata"
|
38
|
+
]
|
39
|
+
}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
{
|
2
|
+
"type": "object",
|
3
|
+
"properties": {
|
4
|
+
"janus": { "type": "string", "pattern": "success" },
|
5
|
+
"session_id": { "type": "integer" },
|
6
|
+
"transaction": { "type": "string" },
|
7
|
+
"sender": { "type": "integer" },
|
8
|
+
"plugindata": {
|
9
|
+
"type": "hash",
|
10
|
+
"properties": {
|
11
|
+
"data": {
|
12
|
+
"type": "hash",
|
13
|
+
"properties": {
|
14
|
+
"videocontrol": { "type": "string", "pattern": "destroyed" },
|
15
|
+
"channel": { "type": "integer"}
|
16
|
+
},
|
17
|
+
"required": [
|
18
|
+
"videocontrol",
|
19
|
+
"channel"
|
20
|
+
]
|
21
|
+
},
|
22
|
+
"plugin": {
|
23
|
+
"type": "string"
|
24
|
+
}
|
25
|
+
},
|
26
|
+
"required": [
|
27
|
+
"data",
|
28
|
+
"plugin"
|
29
|
+
]
|
30
|
+
}
|
31
|
+
},
|
32
|
+
"required": [
|
33
|
+
"janus",
|
34
|
+
"session_id",
|
35
|
+
"sender",
|
36
|
+
"transaction",
|
37
|
+
"plugindata"
|
38
|
+
]
|
39
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
{
|
2
|
+
"type": "object",
|
3
|
+
"properties": {
|
4
|
+
"janus": { "type": "string", "pattern": "success" },
|
5
|
+
"session_id": { "type": "integer" },
|
6
|
+
"transaction": { "type": "string" },
|
7
|
+
"sender": { "type": "integer" },
|
8
|
+
"plugindata": {
|
9
|
+
"type": "hash",
|
10
|
+
"properties": {
|
11
|
+
"data": {
|
12
|
+
"type": "hash",
|
13
|
+
"properties": {
|
14
|
+
"videocontrol": { "type": "string", "pattern": "success" },
|
15
|
+
"channel": { "type": "integer"},
|
16
|
+
"exists": { "type": "boolean" }
|
17
|
+
},
|
18
|
+
"required": [
|
19
|
+
"videocontrol",
|
20
|
+
"channel",
|
21
|
+
"exists"
|
22
|
+
]
|
23
|
+
},
|
24
|
+
"plugin": {
|
25
|
+
"type": "string"
|
26
|
+
}
|
27
|
+
},
|
28
|
+
"required": [
|
29
|
+
"plugin",
|
30
|
+
"data"
|
31
|
+
]
|
32
|
+
}
|
33
|
+
},
|
34
|
+
"required": [
|
35
|
+
"janus",
|
36
|
+
"session_id",
|
37
|
+
"sender",
|
38
|
+
"transaction",
|
39
|
+
"plugindata"
|
40
|
+
]
|
41
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
{
|
2
|
+
"type": "object",
|
3
|
+
"properties": {
|
4
|
+
"janus": { "type": "string", "pattern": "success" },
|
5
|
+
"session_id": { "type": "integer" },
|
6
|
+
"transaction": { "type": "string" },
|
7
|
+
"sender": { "type": "integer" },
|
8
|
+
"plugindata": {
|
9
|
+
"type": "hash",
|
10
|
+
"properties": {
|
11
|
+
"data": {
|
12
|
+
"type": "hash",
|
13
|
+
"properties": {
|
14
|
+
"videocontrol": { "type": "string" },
|
15
|
+
"list": { "type": "array" }
|
16
|
+
},
|
17
|
+
"required": [
|
18
|
+
"videocontrol",
|
19
|
+
"list"
|
20
|
+
]
|
21
|
+
},
|
22
|
+
"plugin": { "type": "string" }
|
23
|
+
},
|
24
|
+
"required": [
|
25
|
+
"data",
|
26
|
+
"plugin"
|
27
|
+
]
|
28
|
+
}
|
29
|
+
},
|
30
|
+
"required": [
|
31
|
+
"janus",
|
32
|
+
"session_id",
|
33
|
+
"sender",
|
34
|
+
"transaction",
|
35
|
+
"plugindata"
|
36
|
+
]
|
37
|
+
}
|
@@ -3,11 +3,13 @@
|
|
3
3
|
"properties": {
|
4
4
|
"janus": { "type": "string", "pattern": "ack" },
|
5
5
|
"transaction": { "type": "string" },
|
6
|
-
"session_id": { "type": "integer" }
|
6
|
+
"session_id": { "type": "integer" },
|
7
|
+
"handle_id": { "type": "integer" }
|
7
8
|
},
|
8
9
|
"required": [
|
9
10
|
"janus",
|
10
11
|
"transaction",
|
11
|
-
"session_id"
|
12
|
+
"session_id",
|
13
|
+
"handle_id"
|
12
14
|
]
|
13
15
|
}
|
@@ -3,11 +3,13 @@
|
|
3
3
|
"properties": {
|
4
4
|
"janus": { "type": "string", "pattern": "ack" },
|
5
5
|
"transaction": { "type": "string" },
|
6
|
-
"session_id": { "type": "integer" }
|
6
|
+
"session_id": { "type": "integer" },
|
7
|
+
"handle_id": { "type": "integer" }
|
7
8
|
},
|
8
9
|
"required": [
|
9
10
|
"janus",
|
10
11
|
"transaction",
|
11
|
-
"session_id"
|
12
|
+
"session_id",
|
13
|
+
"handle_id"
|
12
14
|
]
|
13
15
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_rabbitmq_janus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.3
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- VAILLANT Jeremy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '10.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -285,7 +285,7 @@ description: |
|
|
285
285
|
to RabbitMQ server in a queue for gem. Once the received message is decoded and
|
286
286
|
returned through the Rails API.
|
287
287
|
email:
|
288
|
-
- jeremy@dazzl.tv
|
288
|
+
- jeremy.vaillant@dazzl.tv
|
289
289
|
executables: []
|
290
290
|
extensions: []
|
291
291
|
extra_rdoc_files: []
|
@@ -359,19 +359,6 @@ files:
|
|
359
359
|
- lib/rrj/tools/requests.rb
|
360
360
|
- lib/rrj/tools/tools.rb
|
361
361
|
- lib/ruby_rabbitmq_janus.rb
|
362
|
-
- spec/fixtures/config/requests/admin/handle_info.json
|
363
|
-
- spec/fixtures/config/requests/admin/handles.json
|
364
|
-
- spec/fixtures/config/requests/admin/log_level.json
|
365
|
-
- spec/fixtures/config/requests/admin/sessions.json
|
366
|
-
- spec/fixtures/config/requests/base/attach.json
|
367
|
-
- spec/fixtures/config/requests/base/create.json
|
368
|
-
- spec/fixtures/config/requests/base/destroy.json
|
369
|
-
- spec/fixtures/config/requests/base/detach.json
|
370
|
-
- spec/fixtures/config/requests/base/info.json
|
371
|
-
- spec/fixtures/config/requests/base/keepalive.json
|
372
|
-
- spec/fixtures/config/requests/peer/answer.json
|
373
|
-
- spec/fixtures/config/requests/peer/offer.json
|
374
|
-
- spec/fixtures/config/requests/peer/trickle.json
|
375
362
|
- spec/request/admin/request_handle_info_spec.rb
|
376
363
|
- spec/request/admin/request_sessions_spec.rb
|
377
364
|
- spec/request/base/request_attach_spec.rb
|
@@ -380,6 +367,7 @@ files:
|
|
380
367
|
- spec/request/base/request_detach_spec.rb
|
381
368
|
- spec/request/base/request_info_spec.rb
|
382
369
|
- spec/request/base/request_keepalive_spec.rb
|
370
|
+
- spec/request/peer/request_answer_spec.rb
|
383
371
|
- spec/request/peer/request_offer_spec.rb
|
384
372
|
- spec/request/peer/request_trickle_spec.rb
|
385
373
|
- spec/rrj/rrj_config_spec.rb
|
@@ -388,8 +376,8 @@ files:
|
|
388
376
|
- spec/rrj/rrj_spec.rb
|
389
377
|
- spec/spec_helper.rb
|
390
378
|
- spec/support/aruba.rb
|
391
|
-
- spec/support/
|
392
|
-
- spec/support/
|
379
|
+
- spec/support/examples.rb
|
380
|
+
- spec/support/examples_peer.rb
|
393
381
|
- spec/support/schemas/config/config.json
|
394
382
|
- spec/support/schemas/config/rabbit.json
|
395
383
|
- spec/support/schemas/request/admin/handle_info.json
|
@@ -400,6 +388,10 @@ files:
|
|
400
388
|
- spec/support/schemas/request/base/detach.json
|
401
389
|
- spec/support/schemas/request/base/info.json
|
402
390
|
- spec/support/schemas/request/base/keepalive.json
|
391
|
+
- spec/support/schemas/request/channel/create.json
|
392
|
+
- spec/support/schemas/request/channel/destroy.json
|
393
|
+
- spec/support/schemas/request/channel/exist.json
|
394
|
+
- spec/support/schemas/request/channel/list.json
|
403
395
|
- spec/support/schemas/request/peer/answer.json
|
404
396
|
- spec/support/schemas/request/peer/offer.json
|
405
397
|
- spec/support/schemas/request/peer/trickle.json
|
@@ -435,9 +427,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
435
427
|
version: '0'
|
436
428
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
437
429
|
requirements:
|
438
|
-
- - "
|
430
|
+
- - ">="
|
439
431
|
- !ruby/object:Gem::Version
|
440
|
-
version:
|
432
|
+
version: '0'
|
441
433
|
requirements: []
|
442
434
|
rubyforge_project:
|
443
435
|
rubygems_version: 2.5.1
|