ruby_rabbitmq_janus 1.2.9 → 2.0.0.pre.42

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -0
  3. data/README.md +145 -32
  4. data/config/default.yml +2 -0
  5. data/config/requests.md +2 -1
  6. data/config/requests/admin/add_token.json +6 -0
  7. data/config/requests/admin/allow_token.json +6 -0
  8. data/config/requests/admin/disallow_token.json +6 -0
  9. data/config/requests/admin/handle_info.json +1 -1
  10. data/config/requests/admin/handles.json +1 -1
  11. data/config/requests/admin/remove_token.json +6 -0
  12. data/config/requests/admin/sessions.json +1 -1
  13. data/config/requests/admin/set_locking_debug.json +6 -0
  14. data/config/requests/admin/{log_level.json → set_log_level.json} +1 -1
  15. data/config/requests/admin/tokens.json +5 -0
  16. data/config/requests/base/attach.json +1 -1
  17. data/config/requests/base/create.json +1 -1
  18. data/config/requests/base/destroy.json +1 -1
  19. data/config/requests/base/detach.json +1 -1
  20. data/config/requests/base/info.json +1 -1
  21. data/config/requests/base/keepalive.json +1 -1
  22. data/config/requests/peer/answer.json +1 -1
  23. data/config/requests/peer/offer.json +1 -1
  24. data/config/requests/peer/trickle.json +1 -1
  25. data/lib/generators/ruby_rabbitmq_janus/initializer_generator.rb +3 -0
  26. data/lib/rrj/admin.rb +34 -0
  27. data/lib/rrj/errors/error.rb +2 -1
  28. data/lib/rrj/errors/init.rb +6 -0
  29. data/lib/rrj/errors/janus/janus.rb +1 -0
  30. data/lib/rrj/errors/janus/janus_message.rb +8 -4
  31. data/lib/rrj/errors/janus/janus_processus_keepalive.rb +1 -0
  32. data/lib/rrj/errors/janus/janus_response.rb +27 -6
  33. data/lib/rrj/errors/janus/janus_transaction.rb +4 -0
  34. data/lib/rrj/errors/rabbit/rabbit.rb +3 -1
  35. data/lib/rrj/errors/tools/config.rb +1 -0
  36. data/lib/rrj/info.rb +1 -1
  37. data/lib/rrj/init.rb +37 -169
  38. data/lib/rrj/janus/messages/admin.rb +1 -2
  39. data/lib/rrj/janus/messages/message.rb +4 -4
  40. data/lib/rrj/janus/messages/standard.rb +3 -5
  41. data/lib/rrj/janus/processus/concurrency.rb +1 -1
  42. data/lib/rrj/janus/processus/keepalive.rb +10 -4
  43. data/lib/rrj/janus/responses/admin.rb +31 -0
  44. data/lib/rrj/janus/responses/event.rb +23 -5
  45. data/lib/rrj/janus/responses/response.rb +2 -0
  46. data/lib/rrj/janus/responses/standard.rb +26 -5
  47. data/lib/rrj/janus/transactions/admin.rb +22 -26
  48. data/lib/rrj/janus/transactions/handle.rb +13 -8
  49. data/lib/rrj/janus/transactions/session.rb +25 -7
  50. data/lib/rrj/janus/transactions/transaction.rb +2 -1
  51. data/lib/rrj/rabbit/connect.rb +2 -3
  52. data/lib/rrj/rabbit/publish/admin.rb +1 -6
  53. data/lib/rrj/rabbit/publish/base_publisher.rb +6 -11
  54. data/lib/rrj/rabbit/publish/exclusive.rb +1 -0
  55. data/lib/rrj/rabbit/publish/listener.rb +10 -27
  56. data/lib/rrj/rabbit/publish/non_exclusive.rb +2 -6
  57. data/lib/rrj/rabbit/publish/publisher.rb +4 -17
  58. data/lib/rrj/tools/{config.rb → gem/config.rb} +5 -5
  59. data/lib/rrj/tools/{log.rb → gem/log.rb} +21 -6
  60. data/lib/rrj/tools/gem/option.rb +57 -0
  61. data/lib/rrj/tools/{requests.rb → gem/requests.rb} +0 -0
  62. data/lib/rrj/tools/replaces/admin.rb +7 -13
  63. data/lib/rrj/tools/replaces/handle.rb +61 -0
  64. data/lib/rrj/tools/replaces/replace.rb +57 -27
  65. data/lib/rrj/tools/replaces/session.rb +34 -0
  66. data/lib/rrj/tools/replaces/type.rb +63 -11
  67. data/lib/rrj/tools/tools.rb +4 -3
  68. data/lib/ruby_rabbitmq_janus.rb +1 -0
  69. data/spec/request/admin/request_handle_info_spec.rb +13 -7
  70. data/spec/request/admin/request_handles_spec.rb +20 -0
  71. data/spec/request/admin/request_sessions_spec.rb +5 -4
  72. data/spec/request/admin/request_set_locking_debug_spec.rb +16 -0
  73. data/spec/request/admin/request_set_log_level_spec.rb +16 -0
  74. data/spec/request/admin/request_tokens_spec.rb +13 -0
  75. data/spec/request/base/request_attach_spec.rb +6 -9
  76. data/spec/request/base/request_create_spec.rb +5 -3
  77. data/spec/request/base/request_destroy_spec.rb +5 -3
  78. data/spec/request/base/request_detach_spec.rb +6 -7
  79. data/spec/request/base/request_info_spec.rb +5 -3
  80. data/spec/request/base/request_keepalive_spec.rb +5 -3
  81. data/spec/request/peer/request_offer_spec.rb +18 -92
  82. data/spec/request/peer/request_trickle_spec.rb +9 -28
  83. data/spec/request/peer/request_trickles_spec.rb +23 -0
  84. data/spec/rrj/responses/responses_admin_spec.rb +39 -0
  85. data/spec/rrj/responses/responses_event_spec.rb +25 -0
  86. data/spec/rrj/responses/responses_response_spec.rb +31 -0
  87. data/spec/rrj/responses/responses_standard_spec.rb +43 -0
  88. data/spec/rrj/rrj_config_spec.rb +7 -7
  89. data/spec/rrj/rrj_rabbitmq_spec.rb +1 -1
  90. data/spec/rrj/tools/replace_admin_spec.rb +86 -0
  91. data/spec/rrj/tools/replace_handle_spec.rb +78 -0
  92. data/spec/rrj/tools/replace_session_spec.rb +66 -0
  93. data/spec/rrj/tools/replace_spec.rb +69 -0
  94. data/spec/rrj/tools/type_spec.rb +150 -0
  95. data/spec/spec_helper.rb +46 -7
  96. data/spec/support/examples_request.rb +33 -61
  97. data/spec/support/examples_response.rb +30 -0
  98. data/spec/support/schemas/request/admin/handles.json +15 -0
  99. data/spec/support/schemas/request/admin/set_locking_debug.json +13 -0
  100. data/spec/support/schemas/request/admin/set_log_level.json +11 -0
  101. data/spec/support/schemas/request/admin/tokens.json +13 -0
  102. data/spec/support/type.rb +66 -0
  103. metadata +41 -69
  104. data/config/requests/peer/trickles.json +0 -7
  105. data/lib/rrj/tools/replaces/standard.rb +0 -101
  106. data/spec/fixtures/config/requests/admin/handle_info.json +0 -3
  107. data/spec/fixtures/config/requests/admin/handles.json +0 -3
  108. data/spec/fixtures/config/requests/admin/log_level.json +0 -3
  109. data/spec/fixtures/config/requests/admin/sessions.json +0 -3
  110. data/spec/fixtures/config/requests/base/attach.json +0 -3
  111. data/spec/fixtures/config/requests/base/create.json +0 -4
  112. data/spec/fixtures/config/requests/base/destroy.json +0 -3
  113. data/spec/fixtures/config/requests/base/detach.json +0 -3
  114. data/spec/fixtures/config/requests/base/info.json +0 -3
  115. data/spec/fixtures/config/requests/base/keepalive.json +0 -3
  116. data/spec/fixtures/config/requests/peer/answer.json +0 -3
  117. data/spec/fixtures/config/requests/peer/offer.json +0 -3
  118. data/spec/fixtures/config/requests/peer/trickle.json +0 -3
@@ -5,8 +5,9 @@ module RubyRabbitmqJanus
5
5
  # Define an module for manipulate messages between apps and Janus
6
6
  module Transactions
7
7
  # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
8
-
8
+ #
9
9
  # # Manage a transactions
10
+ #
10
11
  # This class work with Janus and send a series of message
11
12
  class Transaction
12
13
  # Initialize a transaction
@@ -3,7 +3,8 @@
3
3
  module RubyRabbitmqJanus
4
4
  module Rabbit
5
5
  # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
6
- # Class for manage connection with rabbitmq
6
+ #
7
+ # Class for manage connection with RabbitMQ
7
8
  class Connect
8
9
  # Initialize connection to server RabbitMQ
9
10
  def initialize
@@ -48,7 +49,6 @@ module RubyRabbitmqJanus
48
49
 
49
50
  private
50
51
 
51
- # Read option for bunny instance (connection with rabbitmq)
52
52
  def read_options_server
53
53
  cfg = Tools::Config.instance.options['rabbit']
54
54
  opts = {}
@@ -58,7 +58,6 @@ module RubyRabbitmqJanus
58
58
  opts
59
59
  end
60
60
 
61
- # Define option logs for bunny
62
61
  def option_log_rabbit
63
62
  if Tools::Log.instance.level.zero?
64
63
  {
@@ -10,7 +10,7 @@ module RubyRabbitmqJanus
10
10
  #
11
11
  # @param [String] exchange Exchange used for the transaction
12
12
  def initialize(exchange)
13
- @reply = exchange.queue(queue_from)
13
+ @reply = exchange.queue(Tools::Config.instance.queue_admin_from)
14
14
  super(exchange)
15
15
  subscribe_to_queue
16
16
  end
@@ -29,11 +29,6 @@ module RubyRabbitmqJanus
29
29
  private
30
30
 
31
31
  attr_reader :reply
32
-
33
- # Define queue used for posting a message to API admin
34
- def queue_from
35
- Tools::Config.instance.queue_admin_from
36
- end
37
32
  end
38
33
  end
39
34
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- require 'semaphore'
3
2
 
4
3
  module RubyRabbitmqJanus
5
4
  module Rabbit
@@ -16,13 +15,13 @@ module RubyRabbitmqJanus
16
15
  #
17
16
  # @abstract Publish message in RabbitMQ
18
17
  class BasePublisher
19
- attr_reader :responses
18
+ attr_reader :response
20
19
 
21
20
  # Define a base publisher
22
21
  def initialize
23
22
  Tools::Log.instance.debug 'Create an publisher'
24
- @responses = []
25
- @semaphore= Semaphore.new
23
+ @response = nil
24
+ @condition = ConditionVariable.new
26
25
  @lock = Mutex.new
27
26
  end
28
27
 
@@ -30,16 +29,12 @@ module RubyRabbitmqJanus
30
29
 
31
30
  attr_accessor :condition, :lock
32
31
 
33
- # return an response when signal is trigger
34
32
  def return_response
35
- Tools::Log.instance.debug 'Waiting response...'
36
- @semaphore.wait
37
- Tools::Log.instance.debug 'Response received'
38
- response = nil
39
33
  @lock.synchronize do
40
- response = @responses.shift
34
+ Tools::Log.instance.debug 'Response received'
35
+ @condition.wait(@lock)
36
+ @response
41
37
  end
42
- response
43
38
  end
44
39
  end
45
40
  end
@@ -4,6 +4,7 @@ module RubyRabbitmqJanus
4
4
  module Rabbit
5
5
  module Publisher
6
6
  # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
7
+ #
7
8
  # # Publish message
8
9
  #
9
10
  # Publish message in queue exclusive. Bunny create automaticaly a name for
@@ -4,6 +4,7 @@ module RubyRabbitmqJanus
4
4
  module Rabbit
5
5
  module Publisher
6
6
  # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
7
+ #
7
8
  # This publisher don't post message. Is listen just an standard queue to
8
9
  # Janus. By default is "from-janus". It's a parameter in config to this
9
10
  # gem.
@@ -13,62 +14,44 @@ module RubyRabbitmqJanus
13
14
  # @param [String] rabbit Information connection to rabbitmq server
14
15
  def initialize(rabbit)
15
16
  super()
16
- @responses = []
17
17
  @rabbit = rabbit.channel
18
+ @response = nil
18
19
  subscribe_queue
19
20
  end
20
21
 
21
22
  # Listen a queue and return a body response
22
23
  def listen_events
23
- Tools::Log.instance.debug 'Waiting event...'
24
- @semaphore.wait
25
- Tools::Log.instance.info 'Janus event received .. treatment ..'
26
- response = nil
27
24
  lock.synchronize do
28
- response = @responses.shift
25
+ condition.wait(lock)
26
+ Tools::Log.instance.info 'Janus event received .. treatment ..'
27
+ yield @response.event, @response
29
28
  end
30
- yield response.event, response
31
29
  end
32
30
 
33
31
  private
34
32
 
35
- def queue_name
36
- Tools::Config.instance.queue_from
37
- end
38
-
39
- # Subscribe queue
40
33
  def subscribe_queue
41
- reply = @rabbit.queue(queue_name)
34
+ reply = @rabbit.queue(Tools::Config.instance.queue_from)
42
35
  @rabbit.prefetch(1)
43
36
  reply.bind(binding).subscribe(opts_subs) do |info, prop, payload|
44
- log_message_id(prop)
37
+ Tools::Log.instance.info \
38
+ "[X] Message reading ##{prop['correlation_id']}"
45
39
  synchronize_response(info, payload)
46
40
  end
47
41
  end
48
42
 
49
- # Define type binding used for subscriber
50
43
  def binding
51
44
  @rabbit.direct('amq.direct')
52
45
  end
53
46
 
54
- # Options subscribe
55
47
  def opts_subs
56
48
  { block: false, manual_ack: true, arguments: { 'x-priority': 2 } }
57
49
  end
58
50
 
59
- # Counts transmitted messages
60
- def log_message_id(propertie)
61
- message_id = propertie.message_id
62
- Tools::Log.instance.info "[X] Message reading with ID #{message_id}"
63
- end
64
-
65
- # Sending an signal when an response is reading in queue
66
51
  def synchronize_response(info, payload)
67
- lock.synchronize do
68
- @responses.push(Janus::Responses::Event.new(JSON.parse(payload)))
69
- end
52
+ @response = Janus::Responses::Event.new(JSON.parse(payload))
70
53
  @rabbit.acknowledge(info.delivery_tag, false)
71
- @semaphore.signal
54
+ lock.synchronize { condition.signal }
72
55
  end
73
56
  end
74
57
  end
@@ -4,12 +4,13 @@ module RubyRabbitmqJanus
4
4
  module Rabbit
5
5
  module Publisher
6
6
  # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
7
+ #
7
8
  # Publish message in queue non exclusive. By default "to-janus".
8
9
  # This an option in config to this gem.
9
10
  class PublishNonExclusive < Publisher
10
11
  # Define an publisher for create non exclusive queue
11
12
  def initialize(exchange)
12
- @reply = exchange.queue(queue_from)
13
+ @reply = exchange.queue(Tools::Config.instance.queue_from)
13
14
  super(exchange)
14
15
  end
15
16
 
@@ -23,11 +24,6 @@ module RubyRabbitmqJanus
23
24
  private
24
25
 
25
26
  attr_reader :reply
26
-
27
- # Define queue used for posting a message to API public
28
- def queue_from
29
- Tools::Config.instance.queue_from
30
- end
31
27
  end
32
28
  end
33
29
  end
@@ -4,7 +4,7 @@ module RubyRabbitmqJanus
4
4
  module Rabbit
5
5
  module Publisher
6
6
  # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
7
-
7
+ #
8
8
  # This publisher send and read an message in queues
9
9
  class Publisher < BasePublisher
10
10
  # Intialize a publisher for sending and reading a message
@@ -28,35 +28,22 @@ module RubyRabbitmqJanus
28
28
  Tools::Log.instance.info "Send request type : #{request.type}"
29
29
  @message = request
30
30
  @exchange.publish(@message.to_json,
31
- request.options.merge!(reply_to: queue_name))
31
+ request.options.merge!(reply_to: reply.name))
32
32
  rescue => error
33
33
  raise Errors::RabbitPublishMessage, error, request
34
34
  end
35
35
 
36
36
  private
37
37
 
38
- # Subscribe to queue selectd with a message
39
38
  def subscribe_to_queue
40
39
  reply.subscribe do |_delivery_info, propertie, payload|
41
40
  if @message.correlation.eql?(propertie.correlation_id)
42
- Tools::Log.instance.debug "Parsing response payload......"
43
- lock.synchronize do
44
- @responses.push(JSON.parse payload)
45
- end
46
- Tools::Log.instance.debug "Response payload is: #{payload}"
47
- @semaphore.signal
48
- else
49
- Tools::Log.instance.error "Response correlation ID mismatch (#{@message.correlation}!=#{propertie.correlation_id})"
41
+ @response = JSON.parse payload
42
+ lock.synchronize { condition.signal }
50
43
  end
51
44
  end
52
45
  end
53
46
 
54
- # Name to queue used for this publisher
55
- # @return [String] Name to queue used
56
- def queue_name
57
- reply.name
58
- end
59
-
60
47
  attr_accessor :message
61
48
  end
62
49
  end
@@ -32,8 +32,8 @@ module RubyRabbitmqJanus
32
32
  # Initialize configuration file default or customize if exist
33
33
  def initialize
34
34
  @options = @configuration = nil
35
- conf_customize
36
- conf_default
35
+ loading_configuration_customize
36
+ loading_configuration_default
37
37
  Tools::Log.instance.save_level(log_level)
38
38
  end
39
39
 
@@ -86,17 +86,17 @@ module RubyRabbitmqJanus
86
86
  def load_configuration
87
87
  log_message = "Loading configuration file : #{@configuration}"
88
88
  Tools::Log.instance.info(log_message)
89
- YAML.load(ERB.new(File.read(@configuration)).result)
89
+ YAML.safe_load(ERB.new(File.read(@configuration)).result)
90
90
  rescue
91
91
  raise Errors::FileNotFound, @configuration
92
92
  end
93
93
 
94
- def conf_customize
94
+ def loading_configuration_customize
95
95
  @configuration = File.join(Dir.pwd, CONF_CUSTOM)
96
96
  @options = load_configuration if File.exist?(@configuration)
97
97
  end
98
98
 
99
- def conf_default
99
+ def loading_configuration_default
100
100
  @configuration = PATH_DEFAULT
101
101
  @options ||= load_configuration
102
102
  end
@@ -23,6 +23,9 @@ module RubyRabbitmqJanus
23
23
  UNKNOWN: Logger::UNKNOWN
24
24
  }.freeze
25
25
 
26
+ # Sensitive data
27
+ SENSITIVES = %i(admin_secret apisecret).freeze
28
+
26
29
  attr_reader :level
27
30
 
28
31
  # Returns a new instance to Log and use `Tag` element for each line
@@ -43,41 +46,41 @@ module RubyRabbitmqJanus
43
46
  #
44
47
  # @param message [String] Message writing in warning level in log
45
48
  def unknown(message)
46
- write_tag { @logs.unknown(message) }
49
+ write_tag { @logs.unknown(filter(message)) }
47
50
  end
48
51
 
49
52
  # Write a message in log with a `FATAL` level
50
53
  #
51
54
  # @param message [String] Message writing in warning level in log
52
55
  def fatal(message)
53
- write_tag { @logs.fatal(message) } if test_level?(Logger::FATAL)
56
+ write_tag { @logs.fatal(filter(message)) } if test_level?(Logger::FATAL)
54
57
  end
55
58
 
56
59
  # Write a message in log with a `ERROR` level
57
60
  #
58
61
  # @param message [String] Message writing in warning level in log
59
62
  def error(message)
60
- write_tag { @logs.error(message) } if test_level?(Logger::ERROR)
63
+ write_tag { @logs.error(filter(message)) } if test_level?(Logger::ERROR)
61
64
  end
62
65
 
63
66
  # Write a message in log with a `WARN` level
64
67
  # @param message [String] Message writing in warning level in log
65
68
  def warn(message)
66
- write_tag { @logs.warn(message) } if test_level?(Logger::WARN)
69
+ write_tag { @logs.warn(filter(message)) } if test_level?(Logger::WARN)
67
70
  end
68
71
 
69
72
  # Write a message in log with a `INFO` level
70
73
  #
71
74
  # @param message [String] Message writing in info level in log
72
75
  def info(message)
73
- write_tag { @logs.info(message) } if test_level?(Logger::INFO)
76
+ write_tag { @logs.info(filter(message)) } if test_level?(Logger::INFO)
74
77
  end
75
78
 
76
79
  # Write a message in log with a `DEBUG` level
77
80
  #
78
81
  # @param message [String] Message writing in debug level in log
79
82
  def debug(message)
80
- write_tag { @logs.debug(message) } if test_level?(Logger::DEBUG)
83
+ write_tag { @logs.debug(filter(message)) } if test_level?(Logger::DEBUG)
81
84
  end
82
85
 
83
86
  # @return [RubyRabbitmqJanus::Tools::Log] the instance to logger
@@ -118,6 +121,18 @@ module RubyRabbitmqJanus
118
121
  def write_tag
119
122
  @logs.tagged(@logs.progname) { yield }
120
123
  end
124
+
125
+ # @todo fix replace
126
+ def filter_sensitive_data(log)
127
+ msg = log
128
+ SENSITIVES.each do |word|
129
+ msg = log.gsub(/\"#{word}\".*\".*\"/, "\"#{word}\":\"[FILTERED]\"") \
130
+ if log.include?(word.to_s)
131
+ end
132
+ msg
133
+ end
134
+
135
+ alias filter filter_sensitive_data
121
136
  end
122
137
  end
123
138
  end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :reek:FeatureEnvy :reek:UtilityFunction
4
+
5
+ module RubyRabbitmqJanus
6
+ module Tools
7
+ # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
8
+
9
+ # # Utility for manage option to this gem.
10
+ #
11
+ # This class start all singleton, Log, Config, Request and Keepalice
12
+ # instance. It's alos used for testing session/handle used in request.
13
+ class Option
14
+ def initialize
15
+ Log.instance
16
+ Config.instance
17
+ Requests.instance
18
+ @session = Janus::Concurrencies::Keepalive.instance.session
19
+ end
20
+
21
+ # Give number session to keepalive
22
+ #
23
+ # @return [Fixnum] Session ID
24
+ #
25
+ # @since 2.0.0
26
+ def keepalive
27
+ @session
28
+ end
29
+
30
+ # Determine session_id used
31
+ #
32
+ # @param [Hash] options Read options used in request
33
+ #
34
+ # @return [Fixnum] Session ID
35
+ #
36
+ # @since 2.0.0
37
+ def use_current_session?(options)
38
+ hash = options
39
+ hash['session_id'] = @session unless hash.key?('session_id')
40
+ hash['session_id']
41
+ end
42
+
43
+ # Determine handle_id used
44
+ #
45
+ # @param [Hash] options Read options used in request
46
+ #
47
+ # @return [Fixnum] Handle ID
48
+ #
49
+ # @since 2.0.0
50
+ def use_current_handle?(options)
51
+ hash = options
52
+ hash['handle_id'] = 0 unless hash.key?('handle_id')
53
+ hash['handle_id']
54
+ end
55
+ end
56
+ end
57
+ end
File without changes
@@ -3,54 +3,48 @@
3
3
  module RubyRabbitmqJanus
4
4
  module Tools
5
5
  module Replaces
6
- # Format message request with good data to HASH format for Admin request
6
+ # Format message request with good data to HASH format for Admin request.
7
+ # Manage level, debug and admin_secret
8
+ #
7
9
  # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
8
- class Admin < Standard
10
+ class Admin < Handle
9
11
  private
10
12
 
11
- # Replace classic elements and for admin elements
12
- def replace_classic
13
+ def replace_element_classic
13
14
  super
14
15
  replace_admins if request.key?('admin_secret')
15
16
  add_secret if opts.key?('add')
16
17
  end
17
18
 
18
- # Add string secret for admin request
19
19
  def add_secret
20
20
  values = opts['add']
21
- Tools::Log.instance.debug "Values add : #{values}"
22
21
  request.merge!(values)
23
22
  end
24
23
 
25
- # Replace elements admins if present
26
24
  def replace_admins
27
25
  replace_admin
28
26
  replace_level if request.key?('level')
29
27
  replace_debug if request.key?('debug')
30
28
  end
31
29
 
32
- # Replace admin secret in request
33
30
  def replace_admin
34
31
  request['admin_secret'] = admin_pass
35
32
  rescue => message
36
33
  Tools::Log.instance.warn "Error replace admin_secret : #{message}"
37
34
  end
38
35
 
39
- # Replace level element
40
36
  def replace_level
41
- request['level'] = opts['level']
37
+ request['level'] = type.convert('level', opts)
42
38
  rescue => message
43
39
  Tools::Log.instance.warn "Error replace level : #{message}"
44
40
  end
45
41
 
46
- # Replace debug element
47
42
  def replace_debug
48
- request['debug'] = opts['debug']
43
+ request['debug'] = type.convert('debug', opts)
49
44
  rescue => message
50
45
  Tools::Log.instance.warn "Error replace debug : #{message}"
51
46
  end
52
47
 
53
- # Given a admin pass for request
54
48
  def admin_pass
55
49
  Tools::Config.instance.options['rabbit']['admin_pass']
56
50
  end