Sha256: ec47d763b006ff8cd25e86f3b04b1b0124566e577096b90003975884d90a6cbf
Contents?: true
Size: 1.2 KB
Versions: 1
Compression:
Stored size: 1.2 KB
Contents
# frozen_string_literal: true module Bitcoiner class Client attr_accessor :endpoint def initialize(user, pass, host) uri = Addressable::URI.heuristic_parse(host) uri.user ||= user uri.password ||= pass self.endpoint = uri.to_s end def balance request 'getbalance' end def accounts balance_hash = request 'listaccounts' AccountHash.new self, balance_hash end def request(method, *args) post_body = { 'method' => method, 'params' => args, 'id' => 'jsonrpc' }.to_json response = Typhoeus.post(endpoint, body: post_body) response_hash = parse_body(response) raise JSONRPCError, response_hash['error'] if response_hash['error'] response_hash['result'] end def inspect "#<Bitcoiner::Client #{endpoint.inspect} >" end class JSONRPCError < RuntimeError; end private def parse_body(response) if response.success? JSON.parse(response.body) else error_message = %i[code return_code].map do |attr| "#{attr}: `#{response.send(attr)}`" end.join(', ') raise JSONRPCError, "unsuccessful response; #{error_message}" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
bitcoiner-0.1.2 | lib/bitcoiner/client.rb |