bitcoiner 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b537b4529a94f5eb6743a974cbbf5bf66fc77f71947af5d8b30079d316ed42a
4
- data.tar.gz: c89ce942d0a5fb9072d3656531469b2dbbb018fe30bf3ed69a1d3b9bbc62d5f6
3
+ metadata.gz: ad08d3e5bdd0f0c8efe3e233bf08d0dd3ec4237b68766d0a1b08965cd24aff79
4
+ data.tar.gz: 5f66ea4a949376c7c1075bbd00b7de454cef939cc90961125ccb54bd5f106b7d
5
5
  SHA512:
6
- metadata.gz: 1e14efc063187082d4c0f006d9773bfad5512b4602151351dc6db3c2e8bcf9e502c6ca50c1e19ad2f24835c07d537165246310a139b4fbb64f569abe0670ba0a
7
- data.tar.gz: 0d74484270504eaf800db13ba09abe9fb545062ffc4b03a5895eaf220e3baff73e4e2d72f25e76b861e5b5961feee5a538c244b820d4cdd99455cc5382debad6
6
+ metadata.gz: 288fb5283f7b5d8b2f5c2812578cef7fdf8f368e146e3652bb2e7dc620208d75a83d2056a389ef1865b46d54faa1524352ccfa7c94c58140aa7b22d9b69ec57d
7
+ data.tar.gz: 637cdfc9dd689f257cc4690cb753789cdb807d3a9dd4272ab7b2e79394eac7bf8aa7ae9910ad80fd2d1f07d67cad5fba4a501d8eae7dce51e6dc1d3cbd6d2556
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rake/testtask'
3
5
 
@@ -1,4 +1,6 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require 'bitcoiner/version'
4
6
 
@@ -17,6 +19,7 @@ Gem::Specification.new do |spec|
17
19
  end
18
20
  spec.require_paths = ['lib']
19
21
 
22
+ spec.add_dependency 'addressable'
20
23
  spec.add_dependency 'typhoeus', '~> 1.3.0'
21
24
 
22
25
  spec.add_development_dependency 'bundler', '~> 1.16'
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bitcoiner/version'
2
4
  require 'typhoeus'
3
5
  require 'json'
6
+ require 'addressable'
4
7
 
5
8
  %w[client account account_hash transaction].each do |f|
6
9
  require File.join(File.dirname(__FILE__), 'bitcoiner', f)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bitcoiner
2
4
  class Account
3
5
  attr_accessor :name
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bitcoiner
2
4
  class AccountHash < Hash
3
5
  def initialize(client, balance_hash)
@@ -1,7 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bitcoiner
2
4
  class Client
3
- def initialize(user, pass, host = '127.0.0.1:8332')
4
- @endpoint = "http://#{user}:#{pass}@#{host}"
5
+ attr_accessor :endpoint
6
+
7
+ def initialize(user, pass, host)
8
+ uri = Addressable::URI.heuristic_parse(host)
9
+ uri.user ||= user
10
+ uri.password ||= pass
11
+ self.endpoint = uri.to_s
5
12
  end
6
13
 
7
14
  def balance
@@ -15,16 +22,29 @@ module Bitcoiner
15
22
 
16
23
  def request(method, *args)
17
24
  post_body = { 'method' => method, 'params' => args, 'id' => 'jsonrpc' }.to_json
18
- response = Typhoeus.post(@endpoint, body: post_body)
19
- response_hash = JSON.parse response.body
25
+ response = Typhoeus.post(endpoint, body: post_body)
26
+ response_hash = parse_body(response)
20
27
  raise JSONRPCError, response_hash['error'] if response_hash['error']
21
28
  response_hash['result']
22
29
  end
23
30
 
24
31
  def inspect
25
- "#<Bitcoiner::Client #{@endpoint.inspect} >"
32
+ "#<Bitcoiner::Client #{endpoint.inspect} >"
26
33
  end
27
34
 
28
35
  class JSONRPCError < RuntimeError; end
36
+
37
+ private
38
+
39
+ def parse_body(response)
40
+ if response.success?
41
+ JSON.parse(response.body)
42
+ else
43
+ error_message = %i[code return_code].map do |attr|
44
+ "#{attr}: `#{response.send(attr)}`"
45
+ end.join(', ')
46
+ raise JSONRPCError, "unsuccessful response; #{error_message}"
47
+ end
48
+ end
29
49
  end
30
50
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bitcoiner
2
4
  class Transaction
3
5
  attr_accessor :id, :account
@@ -14,7 +16,7 @@ module Bitcoiner
14
16
 
15
17
  def inspect
16
18
  "#<Bitcoiner::Transaction #{id} #{amount} to #{account.name} at #{time}>"
17
- rescue
19
+ rescue StandardError
18
20
  "#<Bitcoiner::Transaction #{id} UNCONFIRMED>"
19
21
  end
20
22
 
@@ -23,7 +25,9 @@ module Bitcoiner
23
25
  end
24
26
 
25
27
  def confirmations
26
- detail_hash['confirmations'] rescue 0
28
+ detail_hash['confirmations']
29
+ rescue StandardError
30
+ 0
27
31
  end
28
32
 
29
33
  def time
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bitcoiner
2
- VERSION = '0.1.1'.freeze
4
+ VERSION = '0.1.2'
3
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bitcoiner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryce Kerley
@@ -9,8 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-02-05 00:00:00.000000000 Z
12
+ date: 2018-04-17 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: addressable
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: typhoeus
16
30
  requirement: !ruby/object:Gem::Requirement