ruby_rabbitmq_janus 0.3.0 → 1.0.1
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/.gitignore +64 -7
- data/.reek +7 -0
- data/.rubocop.yml +0 -3
- data/README.md +40 -2
- data/config/default.md +22 -6
- data/config/default.yml +24 -6
- data/config/requests/{test.json → admin/handle_info.json} +2 -4
- data/config/requests/admin/handles.json +6 -0
- data/config/requests/admin/log_level.json +6 -0
- data/config/requests/admin/sessions.json +5 -0
- data/config/requests/{attach.json → base/attach.json} +0 -0
- data/config/requests/{create.json → base/create.json} +0 -0
- data/config/requests/{destroy.json → base/destroy.json} +0 -0
- data/config/requests/{detach.json → base/detach.json} +0 -0
- data/config/requests/{info.json → base/info.json} +0 -0
- data/config/requests/base/keepalive.json +5 -0
- data/lib/generators/ruby_rabbitmq_janus/configuration_generator.rb +23 -0
- data/lib/generators/ruby_rabbitmq_janus/create_request_generator.rb +90 -0
- data/lib/generators/ruby_rabbitmq_janus/default_request_generator.rb +21 -0
- data/lib/generators/ruby_rabbitmq_janus/initializer_generator.rb +17 -0
- data/lib/rrj/errors/config.rb +21 -0
- data/lib/rrj/errors/error.rb +56 -0
- data/lib/rrj/errors/janus.rb +14 -0
- data/lib/rrj/errors/janus_message.rb +45 -0
- data/lib/rrj/errors/janus_response.rb +78 -0
- data/lib/rrj/errors/janus_transaction.rb +31 -0
- data/lib/rrj/errors/rabbit.rb +21 -0
- data/lib/rrj/errors/request.rb +21 -0
- data/lib/rrj/info.rb +40 -0
- data/lib/rrj/init.rb +113 -44
- data/lib/rrj/janus/admin.rb +27 -0
- data/lib/rrj/janus/janus.rb +10 -33
- data/lib/rrj/janus/keepalive.rb +69 -0
- data/lib/rrj/janus/message.rb +77 -22
- data/lib/rrj/janus/response.rb +79 -41
- data/lib/rrj/janus/transaction.rb +53 -0
- data/lib/rrj/janus/transaction_admin.rb +43 -0
- data/lib/rrj/janus/transaction_handle.rb +40 -0
- data/lib/rrj/janus/transaction_session.rb +17 -0
- data/lib/rrj/rabbit/connect.rb +75 -0
- data/lib/rrj/rabbit/propertie.rb +37 -0
- data/lib/rrj/rabbit/publish.rb +100 -0
- data/lib/rrj/rabbit/rabbit.rb +11 -0
- data/lib/rrj/tools/config.rb +63 -0
- data/lib/rrj/tools/env.rb +21 -0
- data/lib/rrj/tools/log.rb +106 -0
- data/lib/rrj/tools/replaces.rb +115 -0
- data/lib/rrj/tools/replaces_admin.rb +44 -0
- data/lib/rrj/tools/requests.rb +57 -0
- data/lib/rrj/tools/tools.rb +14 -0
- data/lib/ruby_rabbitmq_janus.rb +8 -13
- data/rrj.gemspec +7 -3
- metadata +108 -28
- data/config.reek +0 -3
- data/lib/rrj/config.rb +0 -57
- data/lib/rrj/janus/error.rb +0 -8
- data/lib/rrj/janus/message_async.rb +0 -54
- data/lib/rrj/janus/message_sync.rb +0 -34
- data/lib/rrj/log.rb +0 -63
- data/lib/rrj/rabbitmq/rabbitmq.rb +0 -82
- data/lib/rrj/request/path.rb +0 -21
- data/lib/rrj/request/replaces.rb +0 -109
- data/lib/rrj/request/requests.rb +0 -55
- data/lib/rrj/request/type_data.rb +0 -30
- data/lib/rrj/version.rb +0 -17
| @@ -0,0 +1,106 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module RubyRabbitmqJanus
         | 
| 4 | 
            +
              module Tools
         | 
| 5 | 
            +
                # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
         | 
| 6 | 
            +
                # Class for wrtting logs.
         | 
| 7 | 
            +
                class Log
         | 
| 8 | 
            +
                  include Singleton
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  # Levels to log
         | 
| 11 | 
            +
                  LEVELS = {
         | 
| 12 | 
            +
                    DEBUG: Logger::DEBUG,
         | 
| 13 | 
            +
                    INFO: Logger::INFO,
         | 
| 14 | 
            +
                    WARN: Logger::WARN,
         | 
| 15 | 
            +
                    ERROR: Logger::ERROR,
         | 
| 16 | 
            +
                    FATAL: Logger::FATAL,
         | 
| 17 | 
            +
                    UNKNOWN: Logger::UNKNOWN
         | 
| 18 | 
            +
                  }.freeze
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  # This method smell :reek:Attribute
         | 
| 21 | 
            +
                  attr_accessor :level, :progname
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  # Returns a new instance to Log
         | 
| 24 | 
            +
                  def initialize
         | 
| 25 | 
            +
                    logs = defined?(Rails) ? logger_rails : logger_develop
         | 
| 26 | 
            +
                    logs.progname = RubyRabbitmqJanus.name
         | 
| 27 | 
            +
                    logs.level = LEVELS[:DEBUG]
         | 
| 28 | 
            +
                    logs.info('### Start gem Rails Rabbit Janus ###')
         | 
| 29 | 
            +
                    @level = logs.level
         | 
| 30 | 
            +
                    @progname = logs.progname
         | 
| 31 | 
            +
                    @logs = ActiveSupport::TaggedLogging.new(logs)
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  # Write a message in log with a UNKNOWN level
         | 
| 35 | 
            +
                  # @param message [String] Message writing in warning level in log
         | 
| 36 | 
            +
                  def unknown(message)
         | 
| 37 | 
            +
                    write_tag { @logs.unknown(message) }
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  # Write a message in log with a FATAL level
         | 
| 41 | 
            +
                  # @param message [String] Message writing in warning level in log
         | 
| 42 | 
            +
                  def fatal(message)
         | 
| 43 | 
            +
                    write_tag { @logs.fatal(message.red) } if test_level?(Logger::FATAL)
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  # Write a message in log with a ERROR level
         | 
| 47 | 
            +
                  # @param message [String] Message writing in warning level in log
         | 
| 48 | 
            +
                  def error(message)
         | 
| 49 | 
            +
                    write_tag { @logs.error(message.orange) } if test_level?(Logger::ERROR)
         | 
| 50 | 
            +
                  end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                  # Write a message in log with a warn level
         | 
| 53 | 
            +
                  # @param message [String] Message writing in warning level in log
         | 
| 54 | 
            +
                  def warn(message)
         | 
| 55 | 
            +
                    write_tag { @logs.warn(message.yellow) } if test_level?(Logger::WARN)
         | 
| 56 | 
            +
                  end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                  # Write a message in log with a info level
         | 
| 59 | 
            +
                  # @param message [String] Message writing in info level in log
         | 
| 60 | 
            +
                  def info(message)
         | 
| 61 | 
            +
                    write_tag { @logs.info(message.green) } if test_level?(Logger::INFO)
         | 
| 62 | 
            +
                  end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                  # Write a message in log with a debug level
         | 
| 65 | 
            +
                  # @param message [String] Message writing in debug level in log
         | 
| 66 | 
            +
                  def debug(message)
         | 
| 67 | 
            +
                    write_tag { @logs.debug(message.light_blue) } if test_level?(Logger::DEBUG)
         | 
| 68 | 
            +
                  end
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                  # Return instance logger
         | 
| 71 | 
            +
                  def logger
         | 
| 72 | 
            +
                    @logs
         | 
| 73 | 
            +
                  end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                  def logdev
         | 
| 76 | 
            +
                    @logs.instance_variable_get(:'@logdev').filename
         | 
| 77 | 
            +
                  end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                  private
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                  # Define instance logger with rails
         | 
| 82 | 
            +
                  def logger_rails
         | 
| 83 | 
            +
                    Rails.logger
         | 
| 84 | 
            +
                  end
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                  # Define instance logger wiptout rails
         | 
| 87 | 
            +
                  def logger_develop
         | 
| 88 | 
            +
                    log = Logger.new('log/rails-rabbit-janus.log')
         | 
| 89 | 
            +
                    log.formatter = proc do |severity, _datetime, _progname, msg|
         | 
| 90 | 
            +
                      "#{severity[0, 1].upcase}, #{msg}\n"
         | 
| 91 | 
            +
                    end
         | 
| 92 | 
            +
                    log
         | 
| 93 | 
            +
                  end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                  # This method smell :reek:UtilityFunction
         | 
| 96 | 
            +
                  def test_level?(this_level)
         | 
| 97 | 
            +
                    this_level >= Log.instance.level ? true : false
         | 
| 98 | 
            +
                  end
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                  # Write a log with an tag
         | 
| 101 | 
            +
                  def write_tag
         | 
| 102 | 
            +
                    @logs.tagged(@logs.progname) { yield }
         | 
| 103 | 
            +
                  end
         | 
| 104 | 
            +
                end
         | 
| 105 | 
            +
              end
         | 
| 106 | 
            +
            end
         | 
| @@ -0,0 +1,115 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module RubyRabbitmqJanus
         | 
| 4 | 
            +
              module Tools
         | 
| 5 | 
            +
                # Format message request with good data to HASH format
         | 
| 6 | 
            +
                # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
         | 
| 7 | 
            +
                class Replace
         | 
| 8 | 
            +
                  # Initialize a tool replace
         | 
| 9 | 
            +
                  def initialize(request, options = {})
         | 
| 10 | 
            +
                    @request = request
         | 
| 11 | 
            +
                    @opts = options
         | 
| 12 | 
            +
                    Tools::Log.instance.debug "Element to replace : #{@opts}"
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  # Replace element in hash request with information used for this transaction
         | 
| 16 | 
            +
                  # @return HASH request with element replace
         | 
| 17 | 
            +
                  def transform_request
         | 
| 18 | 
            +
                    replace_classic
         | 
| 19 | 
            +
                    unless @opts.empty?
         | 
| 20 | 
            +
                      replace_other if test_presence?('replace')
         | 
| 21 | 
            +
                      add_other if test_presence?('add')
         | 
| 22 | 
            +
                    end
         | 
| 23 | 
            +
                    @request
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  private
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  attr_reader :request, :opts
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  # Replace classic elements
         | 
| 31 | 
            +
                  def replace_classic
         | 
| 32 | 
            +
                    replace_transaction if @request.key?('transaction')
         | 
| 33 | 
            +
                    replace_session if @request.key?('session_id')
         | 
| 34 | 
            +
                    replace_plugin if @request.key?('plugin')
         | 
| 35 | 
            +
                    replace_handle if @request.key?('handle_id')
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  # Create an transaction string and replace in request field with an String format
         | 
| 39 | 
            +
                  def replace_transaction
         | 
| 40 | 
            +
                    @request['transaction'].replace [*('A'..'Z'), *('0'..'9')].sample(10).join
         | 
| 41 | 
            +
                  rescue => message
         | 
| 42 | 
            +
                    Tools::Log.instance.warn "Error transaction replace : #{message}"
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  # Read option session and replace in request
         | 
| 46 | 
            +
                  def replace_session
         | 
| 47 | 
            +
                    @request['session_id'] = @opts['session_id']
         | 
| 48 | 
            +
                  rescue => message
         | 
| 49 | 
            +
                    Tools::Log.instance.warn "Error session replace : #{message}"
         | 
| 50 | 
            +
                  end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                  # Replace plugin string
         | 
| 53 | 
            +
                  def replace_plugin
         | 
| 54 | 
            +
                    @request['plugin'] = Tools::Config.instance.options['janus']['plugins'][0]
         | 
| 55 | 
            +
                  rescue => message
         | 
| 56 | 
            +
                    Tools::Log.instance.warn "Error plugin replace : #{message}"
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                  # Replace handle integer
         | 
| 60 | 
            +
                  def replace_handle
         | 
| 61 | 
            +
                    @request['handle_id'] = @opts['handle_id']
         | 
| 62 | 
            +
                  rescue => message
         | 
| 63 | 
            +
                    Tools::Log.instance.warn "Error handle replace : #{message}"
         | 
| 64 | 
            +
                  end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                  # Replace other element in request
         | 
| 67 | 
            +
                  def replace_other
         | 
| 68 | 
            +
                    values = @opts['replace']
         | 
| 69 | 
            +
                    running_hash(rewrite_key_to_string(values))
         | 
| 70 | 
            +
                  rescue => message
         | 
| 71 | 
            +
                    Tools::Log.instance.warn "Error REPLACE other field : #{message}"
         | 
| 72 | 
            +
                  end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                  # Adds other element to request
         | 
| 75 | 
            +
                  def add_other
         | 
| 76 | 
            +
                    values = @opts['add']
         | 
| 77 | 
            +
                    @request['body'].merge!(values)
         | 
| 78 | 
            +
                  rescue => message
         | 
| 79 | 
            +
                    Tools::Log.instance.warn "Error ADD other field : #{message}"
         | 
| 80 | 
            +
                  end
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                  # Rewrite key symbol to string
         | 
| 83 | 
            +
                  def rewrite_key_to_string(node)
         | 
| 84 | 
            +
                    Hash[
         | 
| 85 | 
            +
                      node.map do |key, value|
         | 
| 86 | 
            +
                        [key.to_s, value.is_a?(Hash) ? rewrite_key_to_string(value) : value]
         | 
| 87 | 
            +
                      end
         | 
| 88 | 
            +
                    ]
         | 
| 89 | 
            +
                  end
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                  # Replace value in request Hash
         | 
| 92 | 
            +
                  def running_hash(hash, parent = 'body')
         | 
| 93 | 
            +
                    hash.each do |key, value|
         | 
| 94 | 
            +
                      if value.is_a?(Hash)
         | 
| 95 | 
            +
                        running_hash(value, new_parent(key, parent))
         | 
| 96 | 
            +
                      else
         | 
| 97 | 
            +
                        @request[parent][key] = value
         | 
| 98 | 
            +
                      end
         | 
| 99 | 
            +
                    end
         | 
| 100 | 
            +
                  end
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                  def new_parent(key, parent)
         | 
| 103 | 
            +
                    "#{parent}#{'.' unless parent.empty?}#{key}"
         | 
| 104 | 
            +
                  end
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                  # Test presence of key in many hash
         | 
| 107 | 
            +
                  # :reek:NilCheck
         | 
| 108 | 
            +
                  def test_presence?(presence_of_key)
         | 
| 109 | 
            +
                    @opts.key?(presence_of_key) && \
         | 
| 110 | 
            +
                      @request.key?('body') && \
         | 
| 111 | 
            +
                      !@opts[presence_of_key].nil?
         | 
| 112 | 
            +
                  end
         | 
| 113 | 
            +
                end
         | 
| 114 | 
            +
              end
         | 
| 115 | 
            +
            end
         | 
| @@ -0,0 +1,44 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module RubyRabbitmqJanus
         | 
| 4 | 
            +
              module Tools
         | 
| 5 | 
            +
                # Format message request with good data to HASH format for Admin request
         | 
| 6 | 
            +
                # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
         | 
| 7 | 
            +
                class AdminReplace < Replace
         | 
| 8 | 
            +
                  private
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  # Replace classic elements and for admin elements
         | 
| 11 | 
            +
                  def replace_classic
         | 
| 12 | 
            +
                    super
         | 
| 13 | 
            +
                    replace_admins if request.key?('admin_secret')
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  # Replace elements admins if present
         | 
| 17 | 
            +
                  def replace_admins
         | 
| 18 | 
            +
                    replace_admin
         | 
| 19 | 
            +
                    replace_level if request.key?('level')
         | 
| 20 | 
            +
                    replace_debug if request.key?('debug')
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  # Replace admin secret in request
         | 
| 24 | 
            +
                  def replace_admin
         | 
| 25 | 
            +
                    cfg = Tools::Config.instance.options['rabbit']
         | 
| 26 | 
            +
                    request['admin_secret'] = Tools::Env.instance.test_env_var(cfg, 'admin_pass')
         | 
| 27 | 
            +
                  rescue => message
         | 
| 28 | 
            +
                    Tools::Log.instance.warn "Error replace admin_secret : #{message}"
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  def replace_level
         | 
| 32 | 
            +
                    request['level'] = opts['level']
         | 
| 33 | 
            +
                  rescue => message
         | 
| 34 | 
            +
                    Tools::Log.instance.warn "Error replace level : #{message}"
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  def replace_debug
         | 
| 38 | 
            +
                    request['debug'] = opts['debug']
         | 
| 39 | 
            +
                  rescue => message
         | 
| 40 | 
            +
                    Tools::Log.instance.warn "Error replace debug : #{message}"
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
            end
         | 
| @@ -0,0 +1,57 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module RubyRabbitmqJanus
         | 
| 4 | 
            +
              module Tools
         | 
| 5 | 
            +
                # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
         | 
| 6 | 
            +
                # Load files json in config/request.
         | 
| 7 | 
            +
                # This file is used for sending a request to RabbitMQ
         | 
| 8 | 
            +
                # @!attribute [r] requests
         | 
| 9 | 
            +
                class Requests
         | 
| 10 | 
            +
                  include Singleton
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  attr_reader :requests
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  # Define folder to request
         | 
| 15 | 
            +
                  PATH_REQUEST = 'config/requests/'
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  # Load all requests in folder
         | 
| 18 | 
            +
                  def initialize
         | 
| 19 | 
            +
                    @requests = {}
         | 
| 20 | 
            +
                    Tools::Log.instance.info "Loading all requests in : #{PATH_REQUEST}"
         | 
| 21 | 
            +
                    Dir[File.join(PATH_REQUEST, '*')].count do |file|
         | 
| 22 | 
            +
                      if File.file?(file)
         | 
| 23 | 
            +
                        read_file(file)
         | 
| 24 | 
            +
                      elsif File.directory?(file)
         | 
| 25 | 
            +
                        each_folder(File.basename(file))
         | 
| 26 | 
            +
                      end
         | 
| 27 | 
            +
                    end
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  private
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  # Run folder contains templates json
         | 
| 33 | 
            +
                  def each_folder(subfolder)
         | 
| 34 | 
            +
                    Dir[File.join(PATH_REQUEST + subfolder, '*')].count do |file|
         | 
| 35 | 
            +
                      if File.file?(file)
         | 
| 36 | 
            +
                        read_folder(subfolder.gsub('/', '::') + '::', file)
         | 
| 37 | 
            +
                      elsif File.directory?(file)
         | 
| 38 | 
            +
                        each_folder(subfolder + '/' + File.basename(file))
         | 
| 39 | 
            +
                      end
         | 
| 40 | 
            +
                    end
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                  # Add template json to requests array
         | 
| 44 | 
            +
                  # @param file [File]
         | 
| 45 | 
            +
                  def read_file(file)
         | 
| 46 | 
            +
                    @requests[File.basename(file, '.json').to_s] = File.path(file)
         | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  # Add template json to requests array with a path
         | 
| 50 | 
            +
                  # @param folder [Dir]
         | 
| 51 | 
            +
                  # @param file [File]
         | 
| 52 | 
            +
                  def read_folder(folder, file)
         | 
| 53 | 
            +
                    @requests[folder + File.basename(file, '.json').to_s] = File.path(file)
         | 
| 54 | 
            +
                  end
         | 
| 55 | 
            +
                end
         | 
| 56 | 
            +
              end
         | 
| 57 | 
            +
            end
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'rrj/tools/log'
         | 
| 4 | 
            +
            require 'rrj/tools/env'
         | 
| 5 | 
            +
            require 'rrj/tools/config'
         | 
| 6 | 
            +
            require 'rrj/tools/requests'
         | 
| 7 | 
            +
            require 'rrj/tools/replaces'
         | 
| 8 | 
            +
            require 'rrj/tools/replaces_admin'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            module RubyRabbitmqJanus
         | 
| 11 | 
            +
              # Contains all tools necessary in this gem
         | 
| 12 | 
            +
              module Tools
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
    
        data/lib/ruby_rabbitmq_janus.rb
    CHANGED
    
    | @@ -1,20 +1,15 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            -
            require 'rrj/version'
         | 
| 3 2 |  | 
| 4 3 | 
             
            require 'rrj/init'
         | 
| 5 | 
            -
            require 'rrj/log'
         | 
| 6 | 
            -
            require 'rrj/config'
         | 
| 7 4 |  | 
| 8 | 
            -
             | 
| 9 | 
            -
            require 'rrj/ | 
| 10 | 
            -
            require 'rrj/request/replaces'
         | 
| 11 | 
            -
            require 'rrj/request/path'
         | 
| 5 | 
            +
            # Define tools for this gems
         | 
| 6 | 
            +
            require 'rrj/tools/tools'
         | 
| 12 7 |  | 
| 13 | 
            -
             | 
| 8 | 
            +
            # Define actions with rabbitmq
         | 
| 9 | 
            +
            require 'rrj/rabbit/rabbit'
         | 
| 14 10 |  | 
| 11 | 
            +
            # Define actions with janus
         | 
| 15 12 | 
             
            require 'rrj/janus/janus'
         | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
            require 'rrj/ | 
| 19 | 
            -
            require 'rrj/janus/response'
         | 
| 20 | 
            -
            require 'rrj/janus/error'
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            # Define errors in gems
         | 
| 15 | 
            +
            require 'rrj/errors/error'
         | 
    
        data/rrj.gemspec
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            lib = File.expand_path('../lib', __FILE__)
         | 
| 2 2 | 
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 3 | 
            -
            require 'rrj/ | 
| 3 | 
            +
            require 'rrj/info'
         | 
| 4 4 |  | 
| 5 5 | 
             
            Gem::Specification.new do |spec|
         | 
| 6 6 | 
             
              spec.name          = 'ruby_rabbitmq_janus'
         | 
| @@ -11,12 +11,14 @@ Gem::Specification.new do |spec| | |
| 11 11 | 
             
              spec.summary       = RubyRabbitmqJanus::SUMMARY
         | 
| 12 12 | 
             
              spec.description   = RubyRabbitmqJanus::DESCRIPTION
         | 
| 13 13 |  | 
| 14 | 
            -
              spec.homepage      =  | 
| 14 | 
            +
              spec.homepage      = RubyRabbitmqJanus::HOMEPAGE
         | 
| 15 15 | 
             
              spec.license       = 'MIT'
         | 
| 16 16 |  | 
| 17 17 | 
             
              spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
         | 
| 18 18 | 
             
              spec.require_paths = ['lib']
         | 
| 19 19 |  | 
| 20 | 
            +
              spec.post_install_message = RubyRabbitmqJanus::POST_INSTALL
         | 
| 21 | 
            +
             | 
| 20 22 | 
             
              spec.add_development_dependency 'bundler', '~> 1.12'
         | 
| 21 23 | 
             
              spec.add_development_dependency 'rake', '~> 10.0'
         | 
| 22 24 | 
             
              spec.add_development_dependency 'rspec', '~> 3.5', '>= 3.5.0'
         | 
| @@ -29,9 +31,11 @@ Gem::Specification.new do |spec| | |
| 29 31 | 
             
              spec.add_development_dependency 'pry-byebug', '~> 3.4'
         | 
| 30 32 | 
             
              spec.add_development_dependency 'json-schema', '~> 2.6', '>= 2.6.2'
         | 
| 31 33 | 
             
              spec.add_development_dependency 'json-schema-rspec', '~> 0.0.4'
         | 
| 34 | 
            +
              spec.add_development_dependency 'activesupport', '~> 4.2', '>= 4.2.7.1'
         | 
| 35 | 
            +
              spec.add_development_dependency 'concurrent-ruby', '~> 1.0', '>= 1.0.2'
         | 
| 32 36 |  | 
| 33 37 | 
             
              spec.add_runtime_dependency 'bunny', '~> 2.5'
         | 
| 34 | 
            -
              spec.add_runtime_dependency 'logging', '~> 2.1'
         | 
| 35 38 | 
             
              spec.add_runtime_dependency 'key_path', '~> 1.2'
         | 
| 36 39 | 
             
              spec.add_runtime_dependency 'thread', '~> 0.2.2'
         | 
| 40 | 
            +
              spec.add_runtime_dependency 'colorize', '~> 0.8.1'
         | 
| 37 41 | 
             
            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: 0. | 
| 4 | 
            +
              version: 1.0.1
         | 
| 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 | 
            +
            date: 2016-11-03 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -197,33 +197,59 @@ dependencies: | |
| 197 197 | 
             
                  - !ruby/object:Gem::Version
         | 
| 198 198 | 
             
                    version: 0.0.4
         | 
| 199 199 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 200 | 
            -
              name:  | 
| 200 | 
            +
              name: activesupport
         | 
| 201 201 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 202 202 | 
             
                requirements:
         | 
| 203 203 | 
             
                - - "~>"
         | 
| 204 204 | 
             
                  - !ruby/object:Gem::Version
         | 
| 205 | 
            -
                    version: '2 | 
| 206 | 
            -
             | 
| 205 | 
            +
                    version: '4.2'
         | 
| 206 | 
            +
                - - ">="
         | 
| 207 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 208 | 
            +
                    version: 4.2.7.1
         | 
| 209 | 
            +
              type: :development
         | 
| 207 210 | 
             
              prerelease: false
         | 
| 208 211 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 209 212 | 
             
                requirements:
         | 
| 210 213 | 
             
                - - "~>"
         | 
| 211 214 | 
             
                  - !ruby/object:Gem::Version
         | 
| 212 | 
            -
                    version: '2 | 
| 215 | 
            +
                    version: '4.2'
         | 
| 216 | 
            +
                - - ">="
         | 
| 217 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 218 | 
            +
                    version: 4.2.7.1
         | 
| 219 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 220 | 
            +
              name: concurrent-ruby
         | 
| 221 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 222 | 
            +
                requirements:
         | 
| 223 | 
            +
                - - "~>"
         | 
| 224 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 225 | 
            +
                    version: '1.0'
         | 
| 226 | 
            +
                - - ">="
         | 
| 227 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 228 | 
            +
                    version: 1.0.2
         | 
| 229 | 
            +
              type: :development
         | 
| 230 | 
            +
              prerelease: false
         | 
| 231 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 232 | 
            +
                requirements:
         | 
| 233 | 
            +
                - - "~>"
         | 
| 234 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 235 | 
            +
                    version: '1.0'
         | 
| 236 | 
            +
                - - ">="
         | 
| 237 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 238 | 
            +
                    version: 1.0.2
         | 
| 213 239 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 214 | 
            -
              name:  | 
| 240 | 
            +
              name: bunny
         | 
| 215 241 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 216 242 | 
             
                requirements:
         | 
| 217 243 | 
             
                - - "~>"
         | 
| 218 244 | 
             
                  - !ruby/object:Gem::Version
         | 
| 219 | 
            -
                    version: '2. | 
| 245 | 
            +
                    version: '2.5'
         | 
| 220 246 | 
             
              type: :runtime
         | 
| 221 247 | 
             
              prerelease: false
         | 
| 222 248 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 223 249 | 
             
                requirements:
         | 
| 224 250 | 
             
                - - "~>"
         | 
| 225 251 | 
             
                  - !ruby/object:Gem::Version
         | 
| 226 | 
            -
                    version: '2. | 
| 252 | 
            +
                    version: '2.5'
         | 
| 227 253 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 228 254 | 
             
              name: key_path
         | 
| 229 255 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -252,6 +278,20 @@ dependencies: | |
| 252 278 | 
             
                - - "~>"
         | 
| 253 279 | 
             
                  - !ruby/object:Gem::Version
         | 
| 254 280 | 
             
                    version: 0.2.2
         | 
| 281 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 282 | 
            +
              name: colorize
         | 
| 283 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 284 | 
            +
                requirements:
         | 
| 285 | 
            +
                - - "~>"
         | 
| 286 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 287 | 
            +
                    version: 0.8.1
         | 
| 288 | 
            +
              type: :runtime
         | 
| 289 | 
            +
              prerelease: false
         | 
| 290 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 291 | 
            +
                requirements:
         | 
| 292 | 
            +
                - - "~>"
         | 
| 293 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 294 | 
            +
                    version: 0.8.1
         | 
| 255 295 | 
             
            description: This gem is used to communicate to a server Janus through RabbitMQ software
         | 
| 256 296 | 
             
              (Message-oriented middleware). It waiting a messages to Rails API who send to RabbitMQ
         | 
| 257 297 | 
             
              server in a queue for janus server. Janus processes a message and send to RabbitMQ
         | 
| @@ -265,6 +305,7 @@ extra_rdoc_files: [] | |
| 265 305 | 
             
            files:
         | 
| 266 306 | 
             
            - ".gitignore"
         | 
| 267 307 | 
             
            - ".overcommit.yml"
         | 
| 308 | 
            +
            - ".reek"
         | 
| 268 309 | 
             
            - ".rspec"
         | 
| 269 310 | 
             
            - ".rubocop.yml"
         | 
| 270 311 | 
             
            - ".travis.yml"
         | 
| @@ -273,37 +314,76 @@ files: | |
| 273 314 | 
             
            - Gemfile
         | 
| 274 315 | 
             
            - LICENSE
         | 
| 275 316 | 
             
            - README.md
         | 
| 276 | 
            -
            - config.reek
         | 
| 277 317 | 
             
            - config/default.md
         | 
| 278 318 | 
             
            - config/default.yml
         | 
| 279 | 
            -
            - config/requests/ | 
| 280 | 
            -
            - config/requests/ | 
| 281 | 
            -
            - config/requests/ | 
| 282 | 
            -
            - config/requests/ | 
| 283 | 
            -
            - config/requests/ | 
| 284 | 
            -
            - config/requests/ | 
| 285 | 
            -
            -  | 
| 319 | 
            +
            - config/requests/admin/handle_info.json
         | 
| 320 | 
            +
            - config/requests/admin/handles.json
         | 
| 321 | 
            +
            - config/requests/admin/log_level.json
         | 
| 322 | 
            +
            - config/requests/admin/sessions.json
         | 
| 323 | 
            +
            - config/requests/base/attach.json
         | 
| 324 | 
            +
            - config/requests/base/create.json
         | 
| 325 | 
            +
            - config/requests/base/destroy.json
         | 
| 326 | 
            +
            - config/requests/base/detach.json
         | 
| 327 | 
            +
            - config/requests/base/info.json
         | 
| 328 | 
            +
            - config/requests/base/keepalive.json
         | 
| 329 | 
            +
            - lib/generators/ruby_rabbitmq_janus/configuration_generator.rb
         | 
| 330 | 
            +
            - lib/generators/ruby_rabbitmq_janus/create_request_generator.rb
         | 
| 331 | 
            +
            - lib/generators/ruby_rabbitmq_janus/default_request_generator.rb
         | 
| 332 | 
            +
            - lib/generators/ruby_rabbitmq_janus/initializer_generator.rb
         | 
| 333 | 
            +
            - lib/rrj/errors/config.rb
         | 
| 334 | 
            +
            - lib/rrj/errors/error.rb
         | 
| 335 | 
            +
            - lib/rrj/errors/janus.rb
         | 
| 336 | 
            +
            - lib/rrj/errors/janus_message.rb
         | 
| 337 | 
            +
            - lib/rrj/errors/janus_response.rb
         | 
| 338 | 
            +
            - lib/rrj/errors/janus_transaction.rb
         | 
| 339 | 
            +
            - lib/rrj/errors/rabbit.rb
         | 
| 340 | 
            +
            - lib/rrj/errors/request.rb
         | 
| 341 | 
            +
            - lib/rrj/info.rb
         | 
| 286 342 | 
             
            - lib/rrj/init.rb
         | 
| 287 | 
            -
            - lib/rrj/janus/ | 
| 343 | 
            +
            - lib/rrj/janus/admin.rb
         | 
| 288 344 | 
             
            - lib/rrj/janus/janus.rb
         | 
| 345 | 
            +
            - lib/rrj/janus/keepalive.rb
         | 
| 289 346 | 
             
            - lib/rrj/janus/message.rb
         | 
| 290 | 
            -
            - lib/rrj/janus/message_async.rb
         | 
| 291 | 
            -
            - lib/rrj/janus/message_sync.rb
         | 
| 292 347 | 
             
            - lib/rrj/janus/response.rb
         | 
| 293 | 
            -
            - lib/rrj/ | 
| 294 | 
            -
            - lib/rrj/ | 
| 295 | 
            -
            - lib/rrj/ | 
| 296 | 
            -
            - lib/rrj/ | 
| 297 | 
            -
            - lib/rrj/ | 
| 298 | 
            -
            - lib/rrj/ | 
| 299 | 
            -
            - lib/rrj/ | 
| 348 | 
            +
            - lib/rrj/janus/transaction.rb
         | 
| 349 | 
            +
            - lib/rrj/janus/transaction_admin.rb
         | 
| 350 | 
            +
            - lib/rrj/janus/transaction_handle.rb
         | 
| 351 | 
            +
            - lib/rrj/janus/transaction_session.rb
         | 
| 352 | 
            +
            - lib/rrj/rabbit/connect.rb
         | 
| 353 | 
            +
            - lib/rrj/rabbit/propertie.rb
         | 
| 354 | 
            +
            - lib/rrj/rabbit/publish.rb
         | 
| 355 | 
            +
            - lib/rrj/rabbit/rabbit.rb
         | 
| 356 | 
            +
            - lib/rrj/tools/config.rb
         | 
| 357 | 
            +
            - lib/rrj/tools/env.rb
         | 
| 358 | 
            +
            - lib/rrj/tools/log.rb
         | 
| 359 | 
            +
            - lib/rrj/tools/replaces.rb
         | 
| 360 | 
            +
            - lib/rrj/tools/replaces_admin.rb
         | 
| 361 | 
            +
            - lib/rrj/tools/requests.rb
         | 
| 362 | 
            +
            - lib/rrj/tools/tools.rb
         | 
| 300 363 | 
             
            - lib/ruby_rabbitmq_janus.rb
         | 
| 301 364 | 
             
            - rrj.gemspec
         | 
| 302 365 | 
             
            homepage: https://github.com/dazzl-tv/ruby-rabbitmq-janus
         | 
| 303 366 | 
             
            licenses:
         | 
| 304 367 | 
             
            - MIT
         | 
| 305 368 | 
             
            metadata: {}
         | 
| 306 | 
            -
            post_install_message: 
         | 
| 369 | 
            +
            post_install_message: |-
         | 
| 370 | 
            +
              # ====================================================== #
         | 
| 371 | 
            +
              # Thanks for installing!                                 #
         | 
| 372 | 
            +
              # https://github.com/dazzl-tv/ruby-rabbitmq-janus.       #
         | 
| 373 | 
            +
              # ;;;;;;;;;;;:.                                          #
         | 
| 374 | 
            +
              # ;;;;;;;;;;;;;;;;;;                                     #
         | 
| 375 | 
            +
              # ;;;;;;;;;;;:;;;;;;;;                                   #
         | 
| 376 | 
            +
              # ;;;;;;;;;;` ;;;;;;;;                                   #
         | 
| 377 | 
            +
              # ;;;;;;;;;  :;;;;;;;;.                                  #
         | 
| 378 | 
            +
              # ;;;;;;;;   :::::;;;;;                                  #
         | 
| 379 | 
            +
              # ;;;;;;,       ,;;;;;;                                  #
         | 
| 380 | 
            +
              # ;;;;;        ;;;;;;;;                                  #
         | 
| 381 | 
            +
              # ;;;;;;;;;   ;;;;;;;;,                                  #
         | 
| 382 | 
            +
              # ;;;;;;;;; `;;;;;;;;;     A    ZZZZZZZ ZZZZZZZ LL       #
         | 
| 383 | 
            +
              # ;;;;;;;;.:;;;;;;;;;;    A A      ZZZ     ZZZ  LL       #
         | 
| 384 | 
            +
              # ;;;;;;;;;;;;;;;;;      AAAAA   ZZ      ZZ     LL       #
         | 
| 385 | 
            +
              # ;;;;;;;;;;;;;,        A     A ZZZZZZZ ZZZZZZZ LLLLLLL  #
         | 
| 386 | 
            +
              # ====================================================== #
         | 
| 307 387 | 
             
            rdoc_options: []
         | 
| 308 388 | 
             
            require_paths:
         | 
| 309 389 | 
             
            - lib
         | 
    
        data/config.reek
    DELETED
    
    
    
        data/lib/rrj/config.rb
    DELETED
    
    | @@ -1,57 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'yaml'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module RubyRabbitmqJanus
         | 
| 6 | 
            -
              # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
         | 
| 7 | 
            -
              # Loading a yaml file for apply a configuration to gem.
         | 
| 8 | 
            -
              class Config
         | 
| 9 | 
            -
                include Singleton
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                attr_reader :options
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                # Define a default path to file configuration
         | 
| 14 | 
            -
                DEFAULT_PATH = File.realpath(File.join(File.dirname(__FILE__), '..', '..'))
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                # Define a default name to file configuration
         | 
| 17 | 
            -
                DEFAULT_CONF = 'config/default.yml'
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                # Define a default override file configuration
         | 
| 20 | 
            -
                CUSTOMIZE_CONF = 'config/ruby-rabbitmq-janus.yml'
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                # Initialize configuration file default or customize if exist
         | 
| 23 | 
            -
                def initialize
         | 
| 24 | 
            -
                  @options = nil
         | 
| 25 | 
            -
                  conf_customize
         | 
| 26 | 
            -
                  conf_default
         | 
| 27 | 
            -
                  define_log_level_used
         | 
| 28 | 
            -
                end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                private
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                # Load configuration file yaml
         | 
| 33 | 
            -
                # @return [Yaml] Configuration file
         | 
| 34 | 
            -
                # @param file [String] Path to configuration file (with name)
         | 
| 35 | 
            -
                # :reek:UtilityFunction { public_methods_only: true }
         | 
| 36 | 
            -
                def load_configuration(file)
         | 
| 37 | 
            -
                  Log.instance.info("Loading configuration file : #{file}")
         | 
| 38 | 
            -
                  YAML.load(File.read(file))
         | 
| 39 | 
            -
                end
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                # Load customize configuration file if exist
         | 
| 42 | 
            -
                def conf_customize
         | 
| 43 | 
            -
                  file = File.join(Dir.pwd, CUSTOMIZE_CONF)
         | 
| 44 | 
            -
                  @options = load_configuration(file) if File.exist?(file)
         | 
| 45 | 
            -
                end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                # Load default configuration if customize configuration doesn't exist
         | 
| 48 | 
            -
                def conf_default
         | 
| 49 | 
            -
                  file = File.join(DEFAULT_PATH, DEFAULT_CONF)
         | 
| 50 | 
            -
                  @options ||= load_configuration(file)
         | 
| 51 | 
            -
                end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                def define_log_level_used
         | 
| 54 | 
            -
                  Log.instance.level = @options['gem']['log']['level']
         | 
| 55 | 
            -
                end
         | 
| 56 | 
            -
              end
         | 
| 57 | 
            -
            end
         |