Class: RJR::Messages::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/rjr/messages/request.rb

Overview

Message sent from client to server to invoke a JSON-RPC method

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ Request

RJR Request Message initializer

Options Hash (args):

  • :message (String)

    json string received from sender

  • :headers (Hash)

    optional headers to set in request and subsequent messages

  • :method (String)

    method to invoke on server

  • :args (Array<Object>)

    to pass to server method, all must be convertable to/from json



38
39
40
# File 'lib/rjr/messages/request.rb', line 38

def initialize(args = {})
  parse_args(args)
end

Instance Attribute Details

#headersObject

Optional headers to add to json outside of standard json-rpc request



27
28
29
# File 'lib/rjr/messages/request.rb', line 27

def headers
  @headers
end

#jr_argsObject

Arguments source is passing to destination method



21
22
23
# File 'lib/rjr/messages/request.rb', line 21

def jr_args
  @jr_args
end

#jr_methodObject

Method source is invoking on the destination



18
19
20
# File 'lib/rjr/messages/request.rb', line 18

def jr_method
  @jr_method
end

#messageObject

Message string received from the source



15
16
17
# File 'lib/rjr/messages/request.rb', line 15

def message
  @message
end

#msg_idObject

ID of the message in accordance w/ json-rpc specification



24
25
26
# File 'lib/rjr/messages/request.rb', line 24

def msg_id
  @msg_id
end

Class Method Details

.is_request_message?(message) ⇒ true, false

Class helper to determine if the specified message is a valid json-rpc method request message.



75
76
77
# File 'lib/rjr/messages/request.rb', line 75

def self.is_request_message?(message)
   message.has?('method') && message.has?('id')
end

Instance Method Details

#to_json(*a) ⇒ Object

Convert request message to json



80
81
82
83
84
85
# File 'lib/rjr/messages/request.rb', line 80

def to_json(*a)
  {'jsonrpc' => '2.0',
   'id'      => @msg_id,
   'method'  => @jr_method,
   'params'  => @jr_args}.merge(@headers).to_json(*a)
end

#to_sObject

Convert request to string format



88
89
90
# File 'lib/rjr/messages/request.rb', line 88

def to_s
  to_json.to_s
end