ruby_rabbitmq_janus 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e84f3c116610870506f8213232cf882aa0aad776
4
- data.tar.gz: a1110cd51f6224d547de7590b6c22dd37f9396e4
3
+ metadata.gz: b347623ca38c99dcc403e14e1d0508ddd931d225
4
+ data.tar.gz: cf5d65fb6489a305c7ba933eec933ffdff2faa21
5
5
  SHA512:
6
- metadata.gz: b6ab1a091ae05441689f106b6f40981e9c2ee45e3123ef053dab9b5034c539b290cf04d51755bd70f472d818da4c3d62166b0ae44044d19a482359e6626ed63e
7
- data.tar.gz: 617a00b0eeb0853caded62f4d65543c8a812b7077831aaf5b0ebf0c930075a0e58304dd666f924940f669e21258f444a24b052b948d035b9ea7bbb81a137a53c
6
+ metadata.gz: 8e72b12fba3edea0af23521c9cfcdbbc57de4589841cc8c5c34c15c70e91de314a8e9a9daa26098f71aecba014dd5950b5e01cecc20adf1aef77cee053d3cfc3
7
+ data.tar.gz: ecac69d94e67405f13dbe5329280b1a9cbf06fcf9271ad03ced2cc4e69511bb26eec58e20c9ed87161e1768133d33be005cb0eb53b189e785d68ae818cf1a640
data/.rspec CHANGED
@@ -1,2 +1,2 @@
1
- --format Fuubar
1
+ --format documentation
2
2
  --color
data/lib/rrj/info.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  # Define constant to gem.
4
4
  module RubyRabbitmqJanus
5
5
  # Define version to gem
6
- VERSION = '1.0.6'
6
+ VERSION = '1.0.7'
7
7
 
8
8
  # Define a summary description to gem
9
9
  SUMMARY = 'Ruby RabbitMQ Janus'
data/lib/rrj/init.rb CHANGED
@@ -35,7 +35,10 @@ module RubyRabbitmqJanus
35
35
  # Given a type to request. JSON request writing in 'config/requests/'
36
36
  # @param [Bollean] exclusive
37
37
  # Use an exclusive queue or not
38
- # @example Sending an message info
38
+ # @example Sending an message info in queue 'to-janus'
39
+ # RubyRabbitmqJanus::RRJ.new.message_simple('base::info', true)
40
+ # #=> {}
41
+ # @example Sending an message info in queue exclusive 'ampq.gen-xxxxx'
39
42
  # RubyRabbitmqJanus::RRJ.new.message_simple('base::info')
40
43
  # #=> {"janus":"server_info","name":"Janus WebRTC Gateway" ... }
41
44
  # @return [RubyRabbitmqJanus::Janus::Responses::Standard]
@@ -57,7 +60,7 @@ module RubyRabbitmqJanus
57
60
  # #=> {"janus":"server_info","name":"Janus WebRTC Gateway" ... }
58
61
  # @return [RubyRabbitmqJanus::Janus::Responses::Standard]
59
62
  # Give an object response to janus server
60
- def message_session(type, options = {}, exclusive = false)
63
+ def message_session(type, options = {}, exclusive = true)
61
64
  Janus::Transactions::Session.new(@session).session_connect(exclusive) do
62
65
  Janus::Messages::Standard.new(type, use_current_session?(options))
63
66
  end
@@ -12,7 +12,7 @@ module RubyRabbitmqJanus
12
12
  def initialize(response_janus)
13
13
  @request = response_janus
14
14
  rescue => error
15
- Tools::Log.instance.debug "Request error : #{@request}"
15
+ Tools::Log.instance.debug "Request error [initialize] : #{@request}"
16
16
  raise Errors::JanusResponseInit, error
17
17
  else
18
18
  Tools::Log.instance.debug "Response return : #{to_json}"
@@ -23,7 +23,7 @@ module RubyRabbitmqJanus
23
23
  analysis
24
24
  @request.to_json
25
25
  rescue => error
26
- Tools::Log.instance.debug "Request error : #{@request}"
26
+ Tools::Log.instance.debug "Request error [to_json] : #{@request}"
27
27
  raise Errors::JanusResponseJson, [error, @request]
28
28
  end
29
29
 
@@ -31,7 +31,7 @@ module RubyRabbitmqJanus
31
31
  def to_nice_json
32
32
  JSON.pretty_generate to_hash
33
33
  rescue => error
34
- Tools::Log.instance.debug "Request error : #{@request}"
34
+ Tools::Log.instance.debug "Request error [to_nice_json] : #{@request}"
35
35
  raise Errors::JanusResponsePrettyJson, error
36
36
  end
37
37
 
@@ -40,7 +40,7 @@ module RubyRabbitmqJanus
40
40
  analysis
41
41
  @request
42
42
  rescue => error
43
- Tools::Log.instance.debug "Request error : #{@request}"
43
+ Tools::Log.instance.debug "Request error [to_hash] : #{@request}"
44
44
  raise Errors::JanusResponseHash, [error, @request]
45
45
  end
46
46
 
@@ -25,20 +25,34 @@ module RubyRabbitmqJanus
25
25
 
26
26
  # Publish an message in handle
27
27
  def publish_message_handle(type, options = {})
28
- opts = { 'session_id' => session, 'handle_id' => handle }
29
- msg = Janus::MessageAdmin.new(type, opts.merge!(options))
30
- Janus::Responses::Standard.new(publish.send_a_message(msg))
28
+ opts = {
29
+ 'session_id' => session,
30
+ 'handle_id' => handle,
31
+ 'add' => {
32
+ 'admin_secret' => Tools::Config.instance.options['rabbit']['admin_pass']
33
+ }
34
+ }
35
+ msg = Janus::Messages::Admin.new(type, opts.merge!(options))
36
+ send_a_message { msg }
31
37
  end
32
38
 
33
39
  # Stop an handle running
34
40
  def handle_running_stop
35
- secret = Tools::Config.instance.options['rabbit']['admin_pass']
36
- publish_message_handle('base::detach', admin_secret: secret)
41
+ publish_message_handle('base::detach')
37
42
  end
38
43
 
39
44
  # Define queue used for admin message
40
45
  def choose_queue
41
- @publish = Rabbit::Publisher::PublisherAdmin.new(rabbit.channel)
46
+ chan = rabbit.channel
47
+ @publish = Rabbit::Publisher::PublisherAdmin.new(chan)
48
+ end
49
+
50
+ private
51
+
52
+ # Override method for publishing an message and reading a response
53
+ def send_a_message
54
+ Tools::Log.instance.info 'Publish a message ...'
55
+ Janus::Responses::Standard.new(publish.send_a_message(yield))
42
56
  end
43
57
  end
44
58
  end
@@ -6,8 +6,15 @@ module RubyRabbitmqJanus
6
6
  # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
7
7
  # This class work with janus and send a series of message
8
8
  class Handle < Session
9
+ # Inistialize transaction handle
10
+ def initialize(session)
11
+ super(session)
12
+ @exclusive = nil
13
+ end
14
+
9
15
  # Initialize connection to Rabbit and Janus
10
16
  def handle_connect(exclusive)
17
+ @exclusive = exclusive
11
18
  rabbit.transaction_long do
12
19
  choose_queue(exclusive)
13
20
  create_handle
@@ -18,6 +25,7 @@ module RubyRabbitmqJanus
18
25
  # Initialize connection to Rabbit and Janus and close after sending an received
19
26
  # a response
20
27
  def handle_connect_and_stop(exclusive)
28
+ @exclusive = exclusive
21
29
  rabbit.transaction_short do
22
30
  choose_queue(exclusive)
23
31
  create_handle
@@ -34,7 +42,29 @@ module RubyRabbitmqJanus
34
42
  def publish_message_handle(type, options = {})
35
43
  opts = { 'session_id' => session, 'handle_id' => handle }
36
44
  msg = Janus::Messages::Standard.new(type, opts.merge!(options))
37
- Janus::Responses::Standard.new(publish.send_a_message(msg))
45
+ publisher = publish.send_a_message(msg)
46
+ Janus::Responses::Standard.new(read_response(publisher, @exclusive))
47
+ end
48
+
49
+ private
50
+
51
+ # Associate handle to transaction
52
+ def create_handle
53
+ Tools::Log.instance.info 'Create an handle'
54
+ msg = Janus::Messages::Standard.new('base::attach', 'session_id' => session)
55
+ @handle = send_a_message_exclusive { msg }
56
+ end
57
+
58
+ # Send a messaeg in exclusive queue
59
+ def send_a_message_exclusive
60
+ Janus::Responses::Standard.new(read_response_exclusive { yield }).sender
61
+ end
62
+
63
+ # Read an response in queue exclusive
64
+ def read_response_exclusive
65
+ chan = rabbit.channel
66
+ tmp_publish = Rabbit::Publisher::PublishExclusive.new(chan, '')
67
+ tmp_publish.send_a_message(yield)
38
68
  end
39
69
  end
40
70
  end
@@ -10,7 +10,7 @@ module RubyRabbitmqJanus
10
10
  def session_connect(exclusive)
11
11
  rabbit.transaction_short do
12
12
  choose_queue(exclusive)
13
- send_a_message { yield }
13
+ send_a_message(exclusive) { yield }
14
14
  end
15
15
  end
16
16
  end
@@ -21,7 +21,7 @@ module RubyRabbitmqJanus
21
21
  def connect(exclusive)
22
22
  @rabbit.transaction_short do
23
23
  choose_queue(exclusive)
24
- send_a_message { yield }
24
+ send_a_message(exclusive) { yield }
25
25
  end
26
26
  end
27
27
 
@@ -31,28 +31,36 @@ module RubyRabbitmqJanus
31
31
 
32
32
  # determine queue used
33
33
  # :reek:ControlParameter and :reek:BooleanParameter
34
- def choose_queue(exclusive = false)
34
+ def choose_queue(exclusive)
35
35
  chan = @rabbit.channel
36
36
  @publish = if exclusive
37
- Tools::Log.instance.debug \
38
- 'Choose an queue non Exclusive : to-janus'
39
- Rabbit::Publisher::PublishNonExclusive.new(chan)
40
- else
41
37
  Tools::Log.instance.debug \
42
38
  'Choose an queue Exclusive : ampq.gen-xxx'
43
39
  Rabbit::Publisher::PublishExclusive.new(chan, '')
40
+ else
41
+ Tools::Log.instance.debug \
42
+ 'Choose an queue non Exclusive : to-janus'
43
+ Rabbit::Publisher::PublishNonExclusive.new(chan)
44
44
  end
45
45
  end
46
46
 
47
47
  # Send a message to queue
48
- def send_a_message
49
- Janus::Responses::Standard.new(@publish.send_a_message(yield))
48
+ def send_a_message(exclusive)
49
+ Tools::Log.instance.info 'Publish a message ...'
50
+ publish = @publish.send_a_message(yield)
51
+ Janus::Responses::Standard.new(read_response(publish, exclusive))
50
52
  end
51
53
 
52
- # Associate handle to transaction
53
- def create_handle
54
- msg = Janus::Messages::Standard.new('base::attach', 'session_id' => @session)
55
- @handle = send_a_message { msg }.sender
54
+ # Read a response if is a exclusive message
55
+ # :reek:ControlParameter
56
+ def read_response(publish, exclusive)
57
+ if exclusive
58
+ Tools::Log.instance.info '... and read a janus response'
59
+ publish
60
+ else
61
+ Tools::Log.instance.info '... and return an empty response'
62
+ {}
63
+ end
56
64
  end
57
65
  end
58
66
  end
@@ -10,6 +10,12 @@ module RubyRabbitmqJanus
10
10
  def initialize(exchange)
11
11
  @reply = exchange.queue(queue_from)
12
12
  super(exchange)
13
+ subscribe_to_queue
14
+ end
15
+
16
+ def send_a_message(request)
17
+ super(request)
18
+ return_response
13
19
  end
14
20
 
15
21
  private
@@ -23,8 +23,8 @@ module RubyRabbitmqJanus
23
23
 
24
24
  # return an response when signal is trigger
25
25
  def return_response
26
- Tools::Log.instance.debug 'Response received'
27
26
  @lock.synchronize do
27
+ Tools::Log.instance.debug 'Response received'
28
28
  @condition.wait(@lock)
29
29
  @response
30
30
  end
@@ -9,7 +9,12 @@ module RubyRabbitmqJanus
9
9
  def initialize(exchange, name_queue)
10
10
  @reply = exchange.queue(name_queue, exclusive: true)
11
11
  super(exchange)
12
- Tools::Log.instance.debug 'Create/Connect to queue exclusive'
12
+ subscribe_to_queue
13
+ end
14
+
15
+ def send_a_message(request)
16
+ super(request)
17
+ return_response
13
18
  end
14
19
 
15
20
  private
@@ -11,7 +11,10 @@ module RubyRabbitmqJanus
11
11
  def initialize(exchange)
12
12
  @reply = exchange.queue(queue_from)
13
13
  super(exchange)
14
- Tools::Log.instance.debug 'Create/Connect to queue non exclusive'
14
+ end
15
+
16
+ def send_a_message(request)
17
+ super(request)
15
18
  end
16
19
 
17
20
  private
@@ -11,7 +11,7 @@ module RubyRabbitmqJanus
11
11
  super()
12
12
  @exchange = exchange.default_exchange
13
13
  @message = nil
14
- subscribe_to_queue
14
+ Tools::Log.instance.info "Create/Connect to queue -- #{reply.name}"
15
15
  end
16
16
 
17
17
  # Publish an message in queue
@@ -20,7 +20,6 @@ module RubyRabbitmqJanus
20
20
  @message = request
21
21
  @exchange.publish(@message.to_json,
22
22
  request.options.merge!(reply_to: queue_name))
23
- return_response
24
23
  end
25
24
 
26
25
  private
@@ -11,6 +11,14 @@ module RubyRabbitmqJanus
11
11
  def replace_classic
12
12
  super
13
13
  replace_admins if request.key?('admin_secret')
14
+ add_secret if opts.key?('add')
15
+ end
16
+
17
+ # Add string secret for admin request
18
+ def add_secret
19
+ values = opts['add']
20
+ Tools::Log.instance.debug "Values add : #{values}"
21
+ request.merge!(values)
14
22
  end
15
23
 
16
24
  # Replace elements admins if present
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.0.6
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - VAILLANT Jeremy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-15 00:00:00.000000000 Z
11
+ date: 2016-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler