class Ripcord::JsonRPC::Response

Attributes

error[R]
id[R]
result[R]

Public Class Methods

from_data(json_data) click to toggle source
# File lib/ripcord/json_rpc/response.rb, line 23
def from_data(json_data)
  raise Ripcord::Error::InvalidResponse, json_data unless valid_data?(json_data)

  new(json_data[:result], json_data[:error], json_data[:id])
end
new(result, error, id) click to toggle source
# File lib/ripcord/json_rpc/response.rb, line 11
def initialize(result, error, id)
  @result = result
  @id = id

  @error = Ripcord::JsonRPC::Error.new(error[:code], error[:message], error[:data]) if error
end
valid_data?(json_data) click to toggle source
# File lib/ripcord/json_rpc/response.rb, line 29
def valid_data?(json_data)
  return false unless json_data.is_a?(Hash)
  return false if json_data[:jsonrpc] != Ripcord::JSON_RPC_VERSION
  return false unless json_data.key?(:id)
  return false unless json_data.key?(:error) ^ json_data.key?(:result)

  if json_data.key?(:error)
    return false unless json_data[:error].is_a?(Hash)
    return false unless json_data[:error].key?(:code)
    return false unless json_data[:error][:code].is_a?(Integer)
    return false unless json_data[:error].key?(:message)
    return false unless json_data[:error][:message].is_a?(String)
  end

  true
rescue StandardError
  false
end

Public Instance Methods

successful?() click to toggle source
# File lib/ripcord/json_rpc/response.rb, line 18
def successful?
  error.nil? && !result.nil?
end