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
51
52
# 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)
rescue
  raise Errors::Janus::Message::Initializer
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
105
106
107
108
109
110
111
112
113
114
# 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)
  rescue
    raise Errors::Janus::Message::Initializer
  end

  # Return request to json format
  #
  # @return [String] Request to JSON format
  def to_json
    @request.to_json
  rescue
    raise Errors::Janus::Message::ToJson
  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
  rescue
    raise Errors::Janus::Message::ToNiceJson
  end

  # Return request to hash format
  #
  # @return [Hash] Request to Hash format
  def to_hash
    @request
  rescue
    raise Errors::Janus::Message::ToHash
  end

  # Return correlation to message
  #
  # @return [String] Correlation string
  def correlation
    @properties.correlation
  rescue
    raise Errors::Janus::Message::Correlation
  end

  private

  attr_accessor :properties, :request

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

  def prepare_request(_options)
    Tools::Log.instance.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



84
85
86
87
88
# File 'lib/rrj/janus/messages/message.rb', line 84

def correlation
  @properties.correlation
rescue
  raise Errors::Janus::Message::Correlation
end

#to_hashHash

Return request to hash format

Returns:

  • (Hash)

    Request to Hash format



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

def to_hash
  @request
rescue
  raise Errors::Janus::Message::ToHash
end

#to_jsonString

Return request to json format

Returns:

  • (String)

    Request to JSON format



57
58
59
60
61
# File 'lib/rrj/janus/messages/message.rb', line 57

def to_json
  @request.to_json
rescue
  raise Errors::Janus::Message::ToJson
end

#to_nice_jsonString

Return request to json format with nice format

Returns:

  • (String)

    Request to JSON format with indent



66
67
68
69
70
# File 'lib/rrj/janus/messages/message.rb', line 66

def to_nice_json
  JSON.pretty_generate to_hash
rescue
  raise Errors::Janus::Message::ToNiceJson
end