lib/berycoin/gem.rb in berycoin-gem-0.1.0 vs lib/berycoin/gem.rb in berycoin-gem-0.1.1

- old
+ new

@@ -1,11 +1,12 @@ require "berycoin/gem/version" -require "berycoin/gem/layer_rpc" +require 'net/http' +require 'uri' +require 'json' -module Berycoin - module Gem +module Berycoin RPCUSER = ENV['RPCUSER'] RPCPASS = ENV['RPCPASS'] RPCHOST = ENV['RPCHOST'] RPCPORT = ENV['RPCPORT'] LINK = "http://" + RPCUSER + ":" + RPCPASS + "@" + RPCHOST + ":" + RPCPORT @@ -322,7 +323,30 @@ end def Wallet.signmessage(berycoinaddress,message) H.signmessage(berycoinaddress,message) end end +end + +class BerycoinRPC + def initialize(service_url) + @uri = URI.parse(service_url) end + + def method_missing(name, *args) + post_body = { 'method' => name, 'params' => args, 'id' => 'jsonrpc' }.to_json + resp = JSON.parse( http_post_request(post_body) ) + raise JSONRPCError, resp['error'] if resp['error'] + resp['result'] + end + + def http_post_request(post_body) + http = Net::HTTP.new(@uri.host, @uri.port) + request = Net::HTTP::Post.new(@uri.request_uri) + request.basic_auth @uri.user, @uri.password + request.content_type = 'application/json' + request.body = post_body + http.request(request).body + end + + class JSONRPCError < RuntimeError; end end \ No newline at end of file