ruby_rabbitmq_janus 1.0.5 → 1.0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 315daf05da37138a7cbd49ee535669ade8fba813
4
- data.tar.gz: 00bf29601cb4f70693875466db4a52f5aa488188
3
+ metadata.gz: e84f3c116610870506f8213232cf882aa0aad776
4
+ data.tar.gz: a1110cd51f6224d547de7590b6c22dd37f9396e4
5
5
  SHA512:
6
- metadata.gz: 3d931cd33d7c2a7ceac9fb2ed395f188fc9fb7d41637462f02c3e5afffa2493e3cb431701c5036f26f25ac61b7beb1a83eedf47a561604be8b7c6e725a07af4f
7
- data.tar.gz: 256f28e5db381ad148dc8c2ab7c8a8a558e97e6a60666b2775b0d865bc73e261caf66bc0d2776310dc3d8d4f3f5206fd30b4c4f57d08c2871b80e4e8d17aa70c
6
+ metadata.gz: b6ab1a091ae05441689f106b6f40981e9c2ee45e3123ef053dab9b5034c539b290cf04d51755bd70f472d818da4c3d62166b0ae44044d19a482359e6626ed63e
7
+ data.tar.gz: 617a00b0eeb0853caded62f4d65543c8a812b7077831aaf5b0ebf0c930075a0e58304dd666f924940f669e21258f444a24b052b948d035b9ea7bbb81a137a53c
@@ -11,7 +11,7 @@ module RubyRabbitmqJanus
11
11
  initializer 'ruby_rabbitmq_janus.rb' do
12
12
  "# frozen_string_literal: true\n\n" \
13
13
  "::RRJ = RubyRabbitmqJanus::RRJ.new\n"\
14
- '::Events = RubyRabbitmqJanus::Janus::Concurrencies::Event.instance'
14
+ '::JanusEvents = RubyRabbitmqJanus::Janus::Concurrencies::Event.instance'
15
15
  end
16
16
  end
17
17
  end
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.5'
6
+ VERSION = '1.0.6'
7
7
 
8
8
  # Define a summary description to gem
9
9
  SUMMARY = 'Ruby RabbitMQ Janus'
data/lib/rrj/init.rb CHANGED
@@ -38,10 +38,11 @@ module RubyRabbitmqJanus
38
38
  # @example Sending an message info
39
39
  # RubyRabbitmqJanus::RRJ.new.message_simple('base::info')
40
40
  # #=> {"janus":"server_info","name":"Janus WebRTC Gateway" ... }
41
- # @return [RubyRabbitmqJanus::Janus::Response] Give an object response to janus server
41
+ # @return [RubyRabbitmqJanus::Janus::Responses::Standard]
42
+ # Give an object response to janus server
42
43
  def message_simple(type = 'base::info', exclusive = false)
43
44
  Janus::Transactions::Transaction.new(@session).connect(exclusive) do
44
- Janus::Message.new(type)
45
+ Janus::Messages::Standard.new(type)
45
46
  end
46
47
  end
47
48
 
@@ -54,10 +55,11 @@ module RubyRabbitmqJanus
54
55
  # @example Sending an message create
55
56
  # RubyRabbitmqJanus::RRJ.new.message_session('base::create')
56
57
  # #=> {"janus":"server_info","name":"Janus WebRTC Gateway" ... }
57
- # @return [RubyRabbitmqJanus::Janus::Response] Give an object response to janus server
58
+ # @return [RubyRabbitmqJanus::Janus::Responses::Standard]
59
+ # Give an object response to janus server
58
60
  def message_session(type, options = {}, exclusive = false)
59
61
  Janus::Transactions::Session.new(@session).session_connect(exclusive) do
60
- Janus::Message.new(type, use_current_session?(options))
62
+ Janus::Messages::Standard.new(type, use_current_session?(options))
61
63
  end
62
64
  rescue => error
63
65
  raise Errors::RRJErrorPost, error
@@ -70,10 +72,11 @@ module RubyRabbitmqJanus
70
72
  # @example Sending an message create
71
73
  # RubyRabbitmqJanus::RRJ.new.message_admin('admin::sessions')
72
74
  # #=> {"janus":"success","sessions": [12345, 8786567465465, ...] }
73
- # @return [RubyRabbitmqJanus::Janus::Response] Give an object response to janus server
75
+ # @return [RubyRabbitmqJanus::Janus::Responses::Standard]
76
+ # Give an object response to janus server
74
77
  def message_admin(type, options = {})
75
78
  Janus::Transactions::Admin.new(@session).connect do
76
- Janus::MessageAdmin.new(type, options.merge!('session_id' => @session))
79
+ Janus::Messages::Admin.new(type, options.merge!('session_id' => @session))
77
80
  end
78
81
  end
79
82
 
@@ -85,7 +88,8 @@ module RubyRabbitmqJanus
85
88
  # @example Sending an message create
86
89
  # RubyRabbitmqJanus::RRJ.new.message_session('base::create')
87
90
  # #=> {"janus":"server_info","name":"Janus WebRTC Gateway" ... }
88
- # @return [RubyRabbitmqJanus::Janus::Response] Give an object response to janus server
91
+ # @return [RubyRabbitmqJanus::Janus::Responses::Standard]
92
+ # Give an object response to janus server
89
93
  def message_handle(type, replace = {}, add = {})
90
94
  options = { 'replace' => replace, 'add' => add }
91
95
  @transaction.publish_message_handle(type, options)
@@ -1,9 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rrj/janus/processus/concurrency'
4
- require 'rrj/janus/message'
5
- require 'rrj/janus/admin'
6
- require 'rrj/janus/response'
4
+ require 'rrj/janus/messages/message'
5
+ require 'rrj/janus/responses/response'
7
6
  require 'rrj/janus/transactions/transaction'
8
7
 
9
8
  module RubyRabbitmqJanus
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyRabbitmqJanus
4
+ module Janus
5
+ module Messages
6
+ # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
7
+ # Create an message for janus
8
+ class Admin < Message
9
+ # Return options to message for rabbitmq
10
+ def options
11
+ Tools::Log.instance.debug 'Options used for admin message'
12
+ properties.options_admin
13
+ rescue => error
14
+ raise Errors::JanusMessagePropertie, error
15
+ end
16
+
17
+ private
18
+
19
+ # Transform raw request in request to janus, so replace element <string>, <number>
20
+ # and other with real value
21
+ def prepare_request(options)
22
+ @request = Tools::AdminReplace.new(request, options).transform_request
23
+ super
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyRabbitmqJanus
4
+ module Janus
5
+ # Modules for create message for Janus
6
+ module Messages
7
+ # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
8
+ # Create an message for janus
9
+ class Message
10
+ attr_reader :type
11
+
12
+ # Instanciate an message
13
+ # @param template_request [String] Name of request prepare
14
+ # @param [Hash] options Options to request (replace element or add in body)
15
+ # @option options [String] :session_id Identifier to session
16
+ # @option options [String] :handle_id Identifier to session manipulate
17
+ # @option options [Hash] :other Element contains in request sending to janus
18
+ # @example Initialize a message
19
+ # Message.new('test', {
20
+ # "session_id": 42,
21
+ # "handle_id": 42,
22
+ # "replace": {
23
+ # "audio": false,
24
+ # "video": true
25
+ # },
26
+ # "add": {
27
+ # "subtitle": true
28
+ # })
29
+ def initialize(template_request, options = {})
30
+ @request = {}
31
+ @type = template_request
32
+ @properties = Rabbit::Propertie.new
33
+ load_request_file
34
+ prepare_request(options)
35
+ rescue => error
36
+ raise Errors::JanusMessage, error
37
+ end
38
+
39
+ # Return request to json format
40
+ def to_json
41
+ @request.to_json
42
+ rescue => error
43
+ raise Errors::JanusMessageJson, error
44
+ end
45
+
46
+ # Return request to json format with nice format
47
+ def to_nice_json
48
+ JSON.pretty_generate to_hash
49
+ rescue => error
50
+ raise Errors::JanusMessagePrettyJson, error
51
+ end
52
+
53
+ # Return request to hash format
54
+ def to_hash
55
+ @request
56
+ rescue => error
57
+ raise Errors::JanusMessageHash, error
58
+ end
59
+
60
+ # Return correlation to message
61
+ def correlation
62
+ @properties.correlation
63
+ end
64
+
65
+ private
66
+
67
+ attr_accessor :properties, :request
68
+
69
+ # Load raw request
70
+ def load_request_file
71
+ @request = JSON.parse File.read Tools::Requests.instance.requests[@type]
72
+ Tools::Log.instance.debug "Opening request : #{to_json}"
73
+ end
74
+
75
+ # Transform JSON request with elements necessary
76
+ def prepare_request(_options)
77
+ Tools::Log.instance.debug "Prepare request for janus : #{to_json}"
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+
84
+ require 'rrj/janus/messages/standard'
85
+ require 'rrj/janus/messages/admin'
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyRabbitmqJanus
4
+ module Janus
5
+ module Messages
6
+ # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
7
+ # # Create an standard message
8
+ class Standard < Message
9
+ # Return options to message for rabbitmq
10
+ def options
11
+ properties.options
12
+ rescue => error
13
+ raise Errors::JanusMessagePropertie, error
14
+ end
15
+
16
+ private
17
+
18
+ # Transform raw request in request to janus, so replace element <string>, <number>
19
+ # and other with real value
20
+ def prepare_request(options)
21
+ @request = Tools::Replace.new(request, options).transform_request
22
+ super
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -7,43 +7,29 @@ module RubyRabbitmqJanus
7
7
  # For listen standard queue ("from-janus" by default)
8
8
  # :reek:InstanceVariableAssumption and :reek:NilCheck
9
9
  # :reek:TooManyInstanceVariables and :reek:TooManyStatements
10
- class Event
10
+ class Event < Concurrency
11
11
  include Singleton
12
12
 
13
13
  # Initialize Event object. Is used for listen an standard out queue to Janus
14
14
  def initialize
15
+ super
15
16
  @publish = @response = nil
16
- Tools::Log.instance.info "Create an thread -- #{self.class.name}"
17
- @rabbit = Rabbit::Connect.new
18
- @lock = Mutex.new
19
- @condition = ConditionVariable.new
20
- @thread_subscribe = Thread.new { initialize_thread }
21
17
  end
22
18
 
23
- # Start listen queue and work with each message reading
24
- def listen(&block)
25
- @thread_subscribe.join
26
- puts 'LISTEN !!'
27
- @thread_listen = Thread.new do
28
- puts 'LISTEN in thread !!'
29
- Thread.pass
30
- @publish.event_received(&block)
19
+ # Execute an block code in a thread
20
+ def run(&block)
21
+ @thread.join
22
+ Thread.new do
23
+ loop { @thread.thread_variable_get(:publish).listen_events(&block) }
31
24
  end
32
25
  end
33
26
 
34
27
  private
35
28
 
36
29
  # Initialize a thread
37
- def initialize_thread
38
- Thread.pass
39
- @rabbit.transaction_long do
40
- @publish = Rabbit::Publisher::Listener.new(@rabbit)
41
- @response = @publish.listen_events
42
- @thread_listen&.join # Call if not nil
43
- end
44
- rescue Interrupt
45
- Tools::Log.instance.info "Stop transaction #{self.class.name}"
46
- @rabbit.close
30
+ def transaction_running
31
+ Thread.current.thread_variable_set(:publish,
32
+ Rabbit::Publisher::Listener.new(rabbit))
47
33
  end
48
34
  end
49
35
  end
@@ -23,7 +23,7 @@ module RubyRabbitmqJanus
23
23
 
24
24
  # Star an session with janus and waiting an signal for saving session_id
25
25
  def transaction_running
26
- @response = Janus::Response.new(create_session)
26
+ @response = Janus::Responses::Standard.new(create_session)
27
27
  signal
28
28
  session_keepalive(ttl)
29
29
  end
@@ -32,8 +32,7 @@ module RubyRabbitmqJanus
32
32
  def session_keepalive(time_to_live)
33
33
  loop do
34
34
  sleep time_to_live
35
- @publish.send_a_message(Janus::Message.new('base::keepalive',
36
- 'session_id' => running_session))
35
+ @publish.send_a_message(message_keepalive)
37
36
  end
38
37
  rescue => message
39
38
  Tools::Log.instance.debug "Error keepalive : #{message}"
@@ -49,13 +48,19 @@ module RubyRabbitmqJanus
49
48
  # Create an message and publish for create session in Janus
50
49
  def create_session
51
50
  @publish = Rabbit::Publisher::PublishExclusive.new(rabbit.channel, '')
52
- @publish.send_a_message(Janus::Message.new('base::create'))
51
+ @publish.send_a_message(Janus::Messages::Standard.new('base::create'))
53
52
  end
54
53
 
55
54
  # Return session_id
56
55
  def running_session
57
56
  @response.session
58
57
  end
58
+
59
+ # Create an message with type keepalive
60
+ def message_keepalive
61
+ Janus::Messages::Standard.new('base::keepalive',
62
+ 'session_id' => running_session)
63
+ end
59
64
  end
60
65
  end
61
66
  end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyRabbitmqJanus
4
+ module Janus
5
+ # Modules for manipulate responses sending by Janus
6
+ module Responses
7
+ # Response for events message
8
+ class Event < Standard
9
+ # Return event to message
10
+ def event
11
+ request['janus']
12
+ end
13
+
14
+ # Return body data
15
+ def data
16
+ request['plugindata']['data'] if plugin_response?
17
+ end
18
+
19
+ # Return jsep data
20
+ def jsep
21
+ request['jsep'] if contains_jsep?
22
+ end
23
+
24
+ private
25
+
26
+ # Test if response contains jsep data
27
+ def contains_jsep?
28
+ request.key?('jsep')
29
+ end
30
+
31
+ # Test if response is returning by plugin
32
+ def plugin_response?
33
+ request.key?('plugindata') && request['plugindata'].key?('data')
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyRabbitmqJanus
4
+ module Janus
5
+ # Modules for manipulate responses sending by Janus
6
+ module Responses
7
+ # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
8
+ # Read and decryt a response to janus
9
+ # :reek:TooManyMethods
10
+ class Response
11
+ # Instanciate a response
12
+ def initialize(response_janus)
13
+ @request = response_janus
14
+ rescue => error
15
+ Tools::Log.instance.debug "Request error : #{@request}"
16
+ raise Errors::JanusResponseInit, error
17
+ else
18
+ Tools::Log.instance.debug "Response return : #{to_json}"
19
+ end
20
+
21
+ # Return request to json format
22
+ def to_json
23
+ analysis
24
+ @request.to_json
25
+ rescue => error
26
+ Tools::Log.instance.debug "Request error : #{@request}"
27
+ raise Errors::JanusResponseJson, [error, @request]
28
+ end
29
+
30
+ # Return request to json format with nice format
31
+ def to_nice_json
32
+ JSON.pretty_generate to_hash
33
+ rescue => error
34
+ Tools::Log.instance.debug "Request error : #{@request}"
35
+ raise Errors::JanusResponsePrettyJson, error
36
+ end
37
+
38
+ # Return request to hash format
39
+ def to_hash
40
+ analysis
41
+ @request
42
+ rescue => error
43
+ Tools::Log.instance.debug "Request error : #{@request}"
44
+ raise Errors::JanusResponseHash, [error, @request]
45
+ end
46
+
47
+ private
48
+
49
+ attr_accessor :request
50
+
51
+ # Analysis response and send exception if janus return an error
52
+ # :reek:DuplicateMethodCall
53
+ def analysis
54
+ raise Errors::JanusResponseSimple, @request if error_simple?
55
+ raise Errors::JanusResponsePlugin, @request['plugindata']['data'] \
56
+ if error_plugin?
57
+ end
58
+
59
+ # Test if message response contains an simple error
60
+ def error_simple?
61
+ @request['janus'].equal? 'error'
62
+ end
63
+
64
+ # Test if message response contains an error in plugin
65
+ def error_plugin?
66
+ @request.key?('plugindata') && @request['plugindata']['data'].key?('error_code')
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ require 'rrj/janus/responses/standard'
74
+ require 'rrj/janus/responses/event'
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyRabbitmqJanus
4
+ module Janus
5
+ # Modules for manipulate responses sending by Janus
6
+ module Responses
7
+ # Response for events message
8
+ class Standard < Response
9
+ # Return a response simple for client
10
+ def for_plugin
11
+ case request['janus']
12
+ when 'success' then request['plugindata']['data']
13
+ when 'ack' then {}
14
+ end
15
+ rescue => error
16
+ Tools::Log.instance.debug "Request error : #{request}"
17
+ raise Errors::JanusResponsePluginData, error
18
+ end
19
+
20
+ # Return a integer to session
21
+ def session
22
+ data_id
23
+ end
24
+
25
+ # Return a integer to handle
26
+ def sender
27
+ data_id
28
+ end
29
+
30
+ private
31
+
32
+ # Read a hash and return an identifier
33
+ def data_id
34
+ analysis
35
+ request['data']['id'].to_i
36
+ rescue => error
37
+ raise Errors::JanusResponseDataId, error
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -27,7 +27,7 @@ module RubyRabbitmqJanus
27
27
  def publish_message_handle(type, options = {})
28
28
  opts = { 'session_id' => session, 'handle_id' => handle }
29
29
  msg = Janus::MessageAdmin.new(type, opts.merge!(options))
30
- Janus::Response.new(publish.send_a_message(msg))
30
+ Janus::Responses::Standard.new(publish.send_a_message(msg))
31
31
  end
32
32
 
33
33
  # Stop an handle running
@@ -33,8 +33,8 @@ module RubyRabbitmqJanus
33
33
  # Publish an message in handle
34
34
  def publish_message_handle(type, options = {})
35
35
  opts = { 'session_id' => session, 'handle_id' => handle }
36
- msg = Janus::Message.new(type, opts.merge!(options))
37
- Janus::Response.new(publish.send_a_message(msg))
36
+ msg = Janus::Messages::Standard.new(type, opts.merge!(options))
37
+ Janus::Responses::Standard.new(publish.send_a_message(msg))
38
38
  end
39
39
  end
40
40
  end
@@ -46,12 +46,12 @@ module RubyRabbitmqJanus
46
46
 
47
47
  # Send a message to queue
48
48
  def send_a_message
49
- Janus::Response.new(@publish.send_a_message(yield))
49
+ Janus::Responses::Standard.new(@publish.send_a_message(yield))
50
50
  end
51
51
 
52
52
  # Associate handle to transaction
53
53
  def create_handle
54
- msg = Janus::Message.new('base::attach', 'session_id' => @session)
54
+ msg = Janus::Messages::Standard.new('base::attach', 'session_id' => @session)
55
55
  @handle = send_a_message { msg }.sender
56
56
  end
57
57
  end
@@ -15,19 +15,15 @@ module RubyRabbitmqJanus
15
15
  @rabbit = rabbit.channel
16
16
  @reply = @rabbit.queue(Tools::Config.instance.options['queues']['queue_from'])
17
17
  Tools::Log.instance.debug "Waiting message from queue : #{@reply.name}"
18
- end
19
-
20
- # Listen a queue and return a body response
21
- def listen_events
22
18
  @reply.subscribe do |_info_delivery, _propertie, payload|
23
19
  synchronize_response(payload)
24
20
  end
25
21
  end
26
22
 
27
- # Execute an action for each response received in queue
28
- def event_received
29
- loop do
30
- return_response
23
+ # Listen a queue and return a body response
24
+ def listen_events
25
+ lock.synchronize do
26
+ condition.wait(lock)
31
27
  yield @response.event, @response.data, @response.jsep
32
28
  end
33
29
  end
@@ -36,9 +32,9 @@ module RubyRabbitmqJanus
36
32
 
37
33
  # Sending an signal when an response is reading in queue
38
34
  def synchronize_response(payload)
39
- @response = Janus::Response.new(JSON.parse(payload))
35
+ @response = Janus::Responses::Event.new(JSON.parse(payload))
40
36
  Tools::Log.instance.info \
41
- "[X] Message number reading : #{@count} --\n\r" \
37
+ "[X] Message number reading ##{@count} --\n\r" \
42
38
  "#{@response.to_hash}"
43
39
  @count += 1
44
40
  lock.synchronize { condition.signal }
data/listen.rb CHANGED
@@ -4,7 +4,7 @@
4
4
  require 'ruby_rabbitmq_janus'
5
5
 
6
6
  @t = RubyRabbitmqJanus::RRJ.new
7
- @events = RubyRabbitmqJanus::Janus::Concurrencies::Event.instance
7
+ @e = RubyRabbitmqJanus::Janus::Concurrencies::Event.instance
8
8
 
9
9
  # :reek:NilCheck and :reek:TooManyStatements
10
10
  def case_event(data, jsep)
@@ -13,9 +13,6 @@ def case_event(data, jsep)
13
13
  when 'joined'
14
14
  puts 'Joined request ...'
15
15
  @t.handle_message_simple('channel::offer', jsep)
16
- when 'selected' then puts 'Selected request ...'
17
- when 'unselected' then puts 'Unselected request ...'
18
- when 'left' then puts 'Left request ...'
19
16
  end
20
17
  update_jsep(jsep) unless jsep.nil?
21
18
  end
@@ -24,33 +21,25 @@ def update_jsep(jsep)
24
21
  puts "JSEP : #{jsep}"
25
22
  end
26
23
 
27
- def case_hangup
28
- puts 'REASON : Hangup'
29
- Thread.current.stop
30
- end
31
-
32
24
  def case_stop
33
25
  puts 'REASON : Stop'
34
26
  Thread.current.stop
35
27
  end
36
28
 
37
- def case_error
38
- puts 'REASON : Error ...'
39
- end
40
-
41
- puts '## Start listen Block'
42
- @events.listen do |reason, data, jsep|
29
+ events = lambda do |reason, data = nil, jsep = nil|
30
+ puts "Execute block code with reason : #{reason}"
43
31
  case reason
44
32
  when 'event' then case_event(data, jsep)
45
- when 'hangup' then case_hangup
46
33
  when 'stop' then case_stop
47
- when 'error' then case_error
48
34
  else
49
35
  puts 'REASON default'
50
36
  end
51
37
  end
38
+
39
+ puts '## Start listen Block'
40
+ @e.run(&events)
52
41
  puts '## End listen block'
53
42
 
54
- puts 'apps running'
43
+ puts '## APPS RUNNING'
55
44
  loop do
56
45
  end
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.5
4
+ version: 1.0.6
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-14 00:00:00.000000000 Z
11
+ date: 2016-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -340,13 +340,16 @@ files:
340
340
  - lib/rrj/errors/request.rb
341
341
  - lib/rrj/info.rb
342
342
  - lib/rrj/init.rb
343
- - lib/rrj/janus/admin.rb
344
343
  - lib/rrj/janus/janus.rb
345
- - lib/rrj/janus/message.rb
344
+ - lib/rrj/janus/messages/admin.rb
345
+ - lib/rrj/janus/messages/message.rb
346
+ - lib/rrj/janus/messages/standard.rb
346
347
  - lib/rrj/janus/processus/concurrency.rb
347
348
  - lib/rrj/janus/processus/event.rb
348
349
  - lib/rrj/janus/processus/keepalive.rb
349
- - lib/rrj/janus/response.rb
350
+ - lib/rrj/janus/responses/event.rb
351
+ - lib/rrj/janus/responses/response.rb
352
+ - lib/rrj/janus/responses/standard.rb
350
353
  - lib/rrj/janus/transactions/admin.rb
351
354
  - lib/rrj/janus/transactions/handle.rb
352
355
  - lib/rrj/janus/transactions/session.rb
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
- # :reek:InstanceVariableAssumption
3
-
4
- module RubyRabbitmqJanus
5
- module Janus
6
- # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
7
- # Create an message for janus
8
- class MessageAdmin < Message
9
- # Return options to message for rabbitmq
10
- def options
11
- Tools::Log.instance.debug 'Options used for admin message'
12
- @properties.options_admin
13
- rescue => error
14
- raise Errors::JanusMessagePropertie, error
15
- end
16
-
17
- private
18
-
19
- # Transform raw request in request to janus, so replace element <string>, <number>
20
- # and other with real value
21
- def prepare_request(options)
22
- @request = Tools::AdminReplace.new(@request, options).transform_request
23
- Tools::Log.instance.debug "Prepare request admin for janus : #{to_json}"
24
- end
25
- end
26
- end
27
- end
@@ -1,86 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RubyRabbitmqJanus
4
- module Janus
5
- # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
6
- # Create an message for janus
7
- class Message
8
- attr_reader :type
9
-
10
- # Instanciate an message
11
- # @param template_request [String] Name of request prepare
12
- # @param [Hash] options Options to request (replace element or add in body)
13
- # @option options [String] :session_id Identifier to session
14
- # @option options [String] :handle_id Identifier to session manipulate
15
- # @option options [Hash] :other Element contains in request sending to janus
16
- # @example Initialize a message
17
- # Message.new('test', {
18
- # "session_id": 42,
19
- # "handle_id": 42,
20
- # "replace": {
21
- # "audio": false,
22
- # "video": true
23
- # },
24
- # "add": {
25
- # "subtitle": true
26
- # })
27
- def initialize(template_request, options = {})
28
- @request = {}
29
- @type = template_request
30
- @properties = Rabbit::Propertie.new
31
- load_request_file
32
- prepare_request(options)
33
- rescue => error
34
- raise Errors::JanusMessage, error
35
- end
36
-
37
- # Return request to json format
38
- def to_json
39
- @request.to_json
40
- rescue => error
41
- raise Errors::JanusMessageJson, error
42
- end
43
-
44
- # Return request to json format with nice format
45
- def to_nice_json
46
- JSON.pretty_generate to_hash
47
- rescue => error
48
- raise Errors::JanusMessagePrettyJson, error
49
- end
50
-
51
- # Return request to hash format
52
- def to_hash
53
- @request
54
- rescue => error
55
- raise Errors::JanusMessageHash, error
56
- end
57
-
58
- # Return options to message for rabbitmq
59
- def options
60
- @properties.options
61
- rescue => error
62
- raise Errors::JanusMessagePropertie, error
63
- end
64
-
65
- # Return correlation to message
66
- def correlation
67
- @properties.correlation
68
- end
69
-
70
- private
71
-
72
- # Load raw request
73
- def load_request_file
74
- @request = JSON.parse File.read Tools::Requests.instance.requests[@type]
75
- Tools::Log.instance.debug "Opening request : #{to_json}"
76
- end
77
-
78
- # Transform raw request in request to janus, so replace element <string>, <number>
79
- # and other with real value
80
- def prepare_request(options)
81
- @request = Tools::Replace.new(@request, options).transform_request
82
- Tools::Log.instance.debug "Prepare request for janus : #{to_json}"
83
- end
84
- end
85
- end
86
- end
@@ -1,119 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RubyRabbitmqJanus
4
- module Janus
5
- # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
6
- # Read and decryt a response to janus
7
- # :reek:TooManyMethods
8
- class Response
9
- # Instanciate a response
10
- def initialize(response_janus)
11
- @request = response_janus
12
- rescue => error
13
- Tools::Log.instance.debug "Request error : #{@request}"
14
- raise Errors::JanusResponseInit, error
15
- else
16
- Tools::Log.instance.debug "Response return : #{to_json}"
17
- end
18
-
19
- # Return request to json format
20
- def to_json
21
- analysis
22
- @request.to_json
23
- rescue => error
24
- Tools::Log.instance.debug "Request error : #{@request}"
25
- raise Errors::JanusResponseJson, [error, @request]
26
- end
27
-
28
- # Return request to json format with nice format
29
- def to_nice_json
30
- JSON.pretty_generate to_hash
31
- rescue => error
32
- Tools::Log.instance.debug "Request error : #{@request}"
33
- raise Errors::JanusResponsePrettyJson, error
34
- end
35
-
36
- # Return request to hash format
37
- def to_hash
38
- analysis
39
- @request
40
- rescue => error
41
- Tools::Log.instance.debug "Request error : #{@request}"
42
- raise Errors::JanusResponseHash, [error, @request]
43
- end
44
-
45
- # Return a response simple for client
46
- def for_plugin
47
- case @request['janus']
48
- when 'success' then @request['plugindata']['data']
49
- when 'ack' then {}
50
- end
51
- rescue => error
52
- Tools::Log.instance.debug "Request error : #{@request}"
53
- raise Errors::JanusResponsePluginData, error
54
- end
55
-
56
- # Return a integer to session
57
- def session
58
- data_id
59
- end
60
-
61
- # Return a integer to handle
62
- def sender
63
- data_id
64
- end
65
-
66
- # Return event to message
67
- def event
68
- @request['janus']
69
- end
70
-
71
- # Return body data
72
- def data
73
- @request['plugindata']['data'] if plugin_response?
74
- end
75
-
76
- # Return jsep data
77
- def jsep
78
- @request['jsep'] if contains_jsep?
79
- end
80
-
81
- private
82
-
83
- # Test if response is returning by plugin
84
- def plugin_response?
85
- @request.key?('plugindata') && @request['plugindata'].key?('data')
86
- end
87
-
88
- # Test if response contains jsep data
89
- def contains_jsep?
90
- @request.key?('jsep')
91
- end
92
-
93
- # Read a hash and return an identifier
94
- def data_id
95
- analysis
96
- @request['data']['id'].to_i
97
- rescue => error
98
- raise Errors::JanusResponseDataId, error
99
- end
100
-
101
- # Analysis response and send exception if janus return an error
102
- # :reek:DuplicateMethodCall
103
- def analysis
104
- raise Errors::JanusResponseSimple, @request if error_simple?
105
- raise Errors::JanusResponsePlugin, @request['plugindata']['data'] if error_plugin?
106
- end
107
-
108
- # Test if message response contains an simple error
109
- def error_simple?
110
- @request['janus'].equal? 'error'
111
- end
112
-
113
- # Test if message response contains an error in plugin
114
- def error_plugin?
115
- @request.key?('plugindata') && @request['plugindata']['data'].key?('error_code')
116
- end
117
- end
118
- end
119
- end