class Lightning::Request

c-lightning request

Attributes

id[R]
log[R]
method[R]
params[R]
plugin[R]
result[RW]

Public Class Methods

new(plugin, id, method, params) click to toggle source
# File lib/lightning/request.rb, line 13
def initialize(plugin, id, method, params)
  @plugin = plugin
  @id = id
  @method = method
  @params = params
  @log = plugin.log
end
parse_from_json(plugin, json) click to toggle source
# File lib/lightning/request.rb, line 21
def self.parse_from_json(plugin, json)
  self.new(plugin, json['id'], json['method']&.to_sym, json['params'])
end

Public Instance Methods

apply_result(result) click to toggle source

write response @param [Hash] result the content of response

# File lib/lightning/request.rb, line 37
def apply_result(result)
  @result = result
  json = {
      jsonrpc: '2.0',
      id: id,
      result: result
  }.to_json
  write(json.to_s)
end
method_args() click to toggle source
# File lib/lightning/request.rb, line 25
def method_args
  if params.is_a?(Array)
    params
  elsif params.is_a?(Hash)
    params.values
  else
    raise ArgumentError, "params does not support format. #{params}"
  end
end
write_error(e) click to toggle source

write error @param [Exception] e an error.

# File lib/lightning/request.rb, line 49
def write_error(e)
  error = {message: e.message}
  error[:code] = e.code if e.is_a?(Lightning::RPCError)
  json = {
      jsonrpc: '2.0',
      id: id,
      error: error
  }.to_json
  write(json.to_s)
end

Private Instance Methods

write(content) click to toggle source
# File lib/lightning/request.rb, line 62
def write(content)
  log.info "write response: #{content}"
  plugin.stdout.write(content + "\n\n")
  plugin.stdout.flush
end