ruby_rabbitmq_janus 1.0.5 → 1.0.6

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: 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