Class: Saorin::Request

Inherits:
Object
  • Object
show all
Includes:
Dumpable
Defined in:
lib/saorin/request.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Dumpable

#to_json

Constructor Details

#initialize(method, params, options = {}) ⇒ Request

Returns a new instance of Request.



11
12
13
14
15
16
17
# File 'lib/saorin/request.rb', line 11

def initialize(method, params, options = {})
  @version = options[:version] || Saorin::JSON_RPC_VERSION
  @method = method
  @params = params
  @id = options[:id]
  @notify = !options.has_key?(:id)
end

Instance Attribute Details

#idObject

Returns the value of attribute id.



9
10
11
# File 'lib/saorin/request.rb', line 9

def id
  @id
end

#methodObject

Returns the value of attribute method.



9
10
11
# File 'lib/saorin/request.rb', line 9

def method
  @method
end

#paramsObject

Returns the value of attribute params.



9
10
11
# File 'lib/saorin/request.rb', line 9

def params
  @params
end

#versionObject

Returns the value of attribute version.



9
10
11
# File 'lib/saorin/request.rb', line 9

def version
  @version
end

Class Method Details

.from_hash(hash) ⇒ Object

Raises:

  • (Saorin::InvalidRequest)


55
56
57
58
59
60
61
# File 'lib/saorin/request.rb', line 55

def self.from_hash(hash)
  raise Saorin::InvalidRequest unless hash.is_a?(::Hash)
  options = hash.dup
  method = options.delete('method')
  params = options.delete('params')
  new method, params, Saorin::Utility.symbolized_keys(options)
end

.symbolized_keys(hash) ⇒ Object



47
48
49
50
51
52
53
# File 'lib/saorin/request.rb', line 47

def self.symbolized_keys(hash)
  hash.each do |k, v|
    if k.is_a? ::String
      hash[k.to_sym] = v
    end
  end
end

Instance Method Details

#notify?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/saorin/request.rb', line 19

def notify?
  @notify
end

#to_hObject



38
39
40
41
42
43
44
45
# File 'lib/saorin/request.rb', line 38

def to_h
  h = {}
  h['jsonrpc'] = @version
  h['method'] = @method
  h['params'] = @params if @params && !@params.empty?
  h['id'] = @id unless notify?
  h
end

#valid?Boolean

Returns:

  • (Boolean)


23
24
25
26
27
28
29
30
31
32
# File 'lib/saorin/request.rb', line 23

def valid?
  return false unless @method && @version
  return false unless [String].any? { |type| @version.is_a? type }
  return false unless [String].any? { |type| @method.is_a? type }
  return false unless [Hash, Array, NilClass].any? { |type| @params.is_a? type }
  return false unless [String, Numeric, NilClass].any? { |type| @id.is_a? type }
  return false unless @version == JSON_RPC_VERSION
  return false unless !@method.start_with?('.')
  true
end

#validateObject

Raises:

  • (Saorin::InvalidRequest)


34
35
36
# File 'lib/saorin/request.rb', line 34

def validate
  raise Saorin::InvalidRequest unless valid?
end