Class: RubyRabbitmqJanus::Janus::Messages::Message

Inherits:
Object
  • Object
show all
Defined in:
lib/rrj/janus/messages/message.rb

Overview

# Create a message for janus.

Create a message, in hash format, and sending to json format. It’s loading file base and change elements and configure message for used in rabbitmq.

Direct Known Subclasses

Admin, Standard

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(template_request, options = {}) ⇒ Message

Instanciate an message

def initialize(template_request, options = { ‘instance’ => 1 })

Examples:

Initialize a message

Message.new('test', {
  "session_id": 42,
  "handle_id": 42,
  "replace": {
    "audio": false,
    "video": true
  },
  "add": {
    "subtitle": true
  })

Parameters:

  • template_request (String)

    Name of request prepare

  • options (Hash) (defaults to: {})

    Options to request

Options Hash (options):

  • :session_id (String)

    Identifier to session

  • :handle_id (String)

    Identifier to session manipulate

  • :other (Hash)

    Element contains in request sending



44
45
46
47
48
49
50
# File 'lib/rrj/janus/messages/message.rb', line 44

def initialize(template_request, options = {})
  @request = {}
  @type = template_request
  @properties = Rabbit::Propertie.new(options['instance'])
  load_request_file
  prepare_request(options)
end

Instance Attribute Details

#typeString (readonly)

Returns Type to request sending (‘base::info’, ‘peer::trickle’).

Returns:

  • (String)

    Type to request sending (‘base::info’, ‘peer::trickle’)



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/rrj/janus/messages/message.rb', line 21

class Message
  attr_reader :type

  # Instanciate an message
  #
  # @param template_request [String] Name of request prepare
  # @param [Hash] options Options to request
  # @option options [String] :session_id Identifier to session
  # @option options [String] :handle_id Identifier to session manipulate
  # @option options [Hash] :other Element contains in request sending
  #
  # @example Initialize a message
  #   Message.new('test', {
  #     "session_id": 42,
  #     "handle_id": 42,
  #     "replace": {
  #       "audio": false,
  #       "video": true
  #     },
  #     "add": {
  #       "subtitle": true
  #     })
  # def initialize(template_request, options = { 'instance' => 1 })
  def initialize(template_request, options = {})
    @request = {}
    @type = template_request
    @properties = Rabbit::Propertie.new(options['instance'])
    load_request_file
    prepare_request(options)
  end

  # Return request to json format
  #
  # @return [String] Request to JSON format
  def to_json(*_args)
    @request.to_json
  end

  # Return request to json format with nice format
  #
  # @return [String] Request to JSON format with indent
  def to_nice_json
    JSON.pretty_generate to_hash
  end

  # Return request to hash format
  #
  # @return [Hash] Request to Hash format
  def to_hash
    @request
  end

  # Return correlation to message
  #
  # @return [String] Correlation string
  def correlation
    @properties.correlation
  end

  private

  attr_accessor :properties, :request

  def load_request_file
    @request = request_instance
    ::Log.debug "Opening request : #{to_json}"
  end

  def prepare_request(_options)
    ::Log.debug "Prepare request for janus : #{to_json}"
  end

  def request_instance
    JSON.parse File.read Tools::Requests.instance.requests[@type]
  end

  def find_instance(options)
    if options.key?('instance')
      options['instance']
    else
      Models::JanusInstance.find_by_session(options['session_id'])
    end
  end
end

Instance Method Details

#correlationString

Return correlation to message

Returns:

  • (String)

    Correlation string



76
77
78
# File 'lib/rrj/janus/messages/message.rb', line 76

def correlation
  @properties.correlation
end

#to_hashHash

Return request to hash format

Returns:

  • (Hash)

    Request to Hash format



69
70
71
# File 'lib/rrj/janus/messages/message.rb', line 69

def to_hash
  @request
end

#to_json(*_args) ⇒ String

Return request to json format

Returns:

  • (String)

    Request to JSON format



55
56
57
# File 'lib/rrj/janus/messages/message.rb', line 55

def to_json(*_args)
  @request.to_json
end

#to_nice_jsonString

Return request to json format with nice format

Returns:

  • (String)

    Request to JSON format with indent



62
63
64
# File 'lib/rrj/janus/messages/message.rb', line 62

def to_nice_json
  JSON.pretty_generate to_hash
end