class RJR::Messages::Request
Message sent from client to server to invoke a JSON-RPC method
Attributes
Optional headers to add to json outside of standard json-rpc request
Arguments
source is passing to destination method
Method source is invoking on the destination
Message string received from the source
ID of the message in accordance w/ json-rpc specification
Public Class Methods
Class
helper to determine if the specified message is a valid json-rpc method request message.
@param [Message] message to check @return [true,false] indicating if message is request message
# File lib/rjr/messages/request.rb, line 75 def self.is_request_message?(message) message.has?('method') && message.has?('id') end
RJR
Request
Message initializer
@param [Hash] args options to set on request @option args [String] :message json string received from sender @option args [Hash] :headers optional headers to set in request
and subsequent messages
@option args [String] :method method to invoke on server @option args [Array<Object>] :args to pass to server method, all
must be convertable to/from json
# File lib/rjr/messages/request.rb, line 38 def initialize(args = {}) parse_args(args) end
Public Instance Methods
Convert request message to json
# 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
Convert request to string format
# File lib/rjr/messages/request.rb, line 88 def to_s to_json.to_s end
Private Instance Methods
# File lib/rjr/messages/request.rb, line 44 def parse_args(args) @jr_method = args[:method] @jr_args = args[:args] || [] @headers = args[:headers] || {} @msg_id = args[:id] || gen_uuid parse_message(args[:message]) if args.has_key?(:message) end
# File lib/rjr/messages/request.rb, line 62 def parse_headers(message) message.keys.select { |k| !['jsonrpc', 'id', 'method', 'params'].include?(k) }.each { |k| @headers[k] = message[k] } end
# File lib/rjr/messages/request.rb, line 53 def parse_message(message) @message = message @jr_method = message['method'] @jr_args = message['params'] @msg_id = message['id'] parse_headers(message) end