straight 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/Gemfile.lock +5 -1
  4. data/README.md +20 -10
  5. data/VERSION +1 -1
  6. data/lib/straight.rb +10 -1
  7. data/lib/straight/blockchain_adapter.rb +2 -13
  8. data/lib/straight/blockchain_adapters/biteasy_adapter.rb +74 -0
  9. data/lib/straight/blockchain_adapters/blockchain_info_adapter.rb +37 -17
  10. data/lib/straight/blockchain_adapters/mycelium_adapter.rb +144 -0
  11. data/lib/straight/exchange_rate_adapter.rb +20 -1
  12. data/lib/straight/exchange_rate_adapters/average_rate_adapter.rb +54 -0
  13. data/lib/straight/exchange_rate_adapters/bitpay_adapter.rb +5 -2
  14. data/lib/straight/exchange_rate_adapters/bitstamp_adapter.rb +2 -1
  15. data/lib/straight/exchange_rate_adapters/btce_adapter.rb +18 -0
  16. data/lib/straight/exchange_rate_adapters/coinbase_adapter.rb +2 -4
  17. data/lib/straight/exchange_rate_adapters/kraken_adapter.rb +18 -0
  18. data/lib/straight/exchange_rate_adapters/localbitcoins_adapter.rb +17 -0
  19. data/lib/straight/exchange_rate_adapters/okcoin_adapter.rb +18 -0
  20. data/lib/straight/gateway.rb +20 -9
  21. data/lib/straight/order.rb +46 -13
  22. data/spec/lib/blockchain_adapters/{helloblock_io_spec.rb → biteasy_adapter_spec.rb} +23 -18
  23. data/spec/lib/blockchain_adapters/{blockchain_info_spec.rb → blockchain_info_adapter_spec.rb} +8 -3
  24. data/spec/lib/blockchain_adapters/mycelium_adapter_spec.rb +54 -0
  25. data/spec/lib/exchange_rate_adapter_spec.rb +6 -1
  26. data/spec/lib/exchange_rate_adapters/average_rate_adapter_spec.rb +43 -0
  27. data/spec/lib/exchange_rate_adapters/bitpay_adapter_spec.rb +14 -1
  28. data/spec/lib/exchange_rate_adapters/bitstamp_adapter_spec.rb +14 -1
  29. data/spec/lib/exchange_rate_adapters/btce_adapter_spec.rb +27 -0
  30. data/spec/lib/exchange_rate_adapters/coinbase_adapter_spec.rb +14 -1
  31. data/spec/lib/exchange_rate_adapters/kraken_adapter_spec.rb +27 -0
  32. data/spec/lib/exchange_rate_adapters/localbitcoins_adapter_spec.rb +27 -0
  33. data/spec/lib/exchange_rate_adapters/okcoin_adapter_spec.rb +27 -0
  34. data/spec/lib/gateway_spec.rb +23 -5
  35. data/spec/lib/order_spec.rb +18 -2
  36. data/straight.gemspec +95 -0
  37. metadata +33 -6
  38. data/lib/straight/blockchain_adapters/helloblock_io_adapter.rb +0 -53
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: straight
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Snitko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-28 00:00:00.000000000 Z
11
+ date: 2015-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: money-tree
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: httparty
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -100,23 +114,36 @@ files:
100
114
  - VERSION
101
115
  - lib/straight.rb
102
116
  - lib/straight/blockchain_adapter.rb
117
+ - lib/straight/blockchain_adapters/biteasy_adapter.rb
103
118
  - lib/straight/blockchain_adapters/blockchain_info_adapter.rb
104
- - lib/straight/blockchain_adapters/helloblock_io_adapter.rb
119
+ - lib/straight/blockchain_adapters/mycelium_adapter.rb
105
120
  - lib/straight/exchange_rate_adapter.rb
121
+ - lib/straight/exchange_rate_adapters/average_rate_adapter.rb
106
122
  - lib/straight/exchange_rate_adapters/bitpay_adapter.rb
107
123
  - lib/straight/exchange_rate_adapters/bitstamp_adapter.rb
124
+ - lib/straight/exchange_rate_adapters/btce_adapter.rb
108
125
  - lib/straight/exchange_rate_adapters/coinbase_adapter.rb
126
+ - lib/straight/exchange_rate_adapters/kraken_adapter.rb
127
+ - lib/straight/exchange_rate_adapters/localbitcoins_adapter.rb
128
+ - lib/straight/exchange_rate_adapters/okcoin_adapter.rb
109
129
  - lib/straight/gateway.rb
110
130
  - lib/straight/order.rb
111
- - spec/lib/blockchain_adapters/blockchain_info_spec.rb
112
- - spec/lib/blockchain_adapters/helloblock_io_spec.rb
131
+ - spec/lib/blockchain_adapters/biteasy_adapter_spec.rb
132
+ - spec/lib/blockchain_adapters/blockchain_info_adapter_spec.rb
133
+ - spec/lib/blockchain_adapters/mycelium_adapter_spec.rb
113
134
  - spec/lib/exchange_rate_adapter_spec.rb
135
+ - spec/lib/exchange_rate_adapters/average_rate_adapter_spec.rb
114
136
  - spec/lib/exchange_rate_adapters/bitpay_adapter_spec.rb
115
137
  - spec/lib/exchange_rate_adapters/bitstamp_adapter_spec.rb
138
+ - spec/lib/exchange_rate_adapters/btce_adapter_spec.rb
116
139
  - spec/lib/exchange_rate_adapters/coinbase_adapter_spec.rb
140
+ - spec/lib/exchange_rate_adapters/kraken_adapter_spec.rb
141
+ - spec/lib/exchange_rate_adapters/localbitcoins_adapter_spec.rb
142
+ - spec/lib/exchange_rate_adapters/okcoin_adapter_spec.rb
117
143
  - spec/lib/gateway_spec.rb
118
144
  - spec/lib/order_spec.rb
119
145
  - spec/spec_helper.rb
146
+ - straight.gemspec
120
147
  homepage: http://github.com/snitko/straight
121
148
  licenses:
122
149
  - MIT
@@ -137,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
164
  version: '0'
138
165
  requirements: []
139
166
  rubyforge_project:
140
- rubygems_version: 2.2.2
167
+ rubygems_version: 2.4.5
141
168
  signing_key:
142
169
  specification_version: 4
143
170
  summary: An engine for the Straight payment gateway software
@@ -1,53 +0,0 @@
1
- module Straight
2
- module Blockchain
3
-
4
- class HelloblockIoAdapter < Adapter
5
-
6
- def self.mainnet_adapter
7
- self.new("https://mainnet.helloblock.io/v1")
8
- end
9
-
10
- def self.testnet_adapter
11
- raise "Not Supported Yet"
12
- end
13
-
14
- def initialize(base_url)
15
- @base_url = base_url
16
- end
17
-
18
- # Returns transaction info for the tid
19
- def fetch_transaction(tid, address: nil)
20
- straighten_transaction JSON.parse(http_request("#{@base_url}/transactions/#{tid}"))['data']['transaction'], address: address
21
- end
22
-
23
- # Returns all transactions for the address
24
- def fetch_transactions_for(address)
25
- transactions = JSON.parse(http_request("#{@base_url}/addresses/#{address}/transactions"))['data']['transactions']
26
- transactions.map { |t| straighten_transaction(t, address: address) }
27
- end
28
-
29
- # Returns the current balance of the address
30
- def fetch_balance_for(address)
31
- JSON.parse(http_request("#{@base_url}/addresses/#{address}"))['data']['address']['balance']
32
- end
33
-
34
- private
35
-
36
- # Converts transaction info received from the source into the
37
- # unified format expected by users of BlockchainAdapter instances.
38
- def straighten_transaction(transaction, address: nil)
39
- outs = transaction['outputs'].map do |out|
40
- { amount: out['value'], receiving_address: out['address'] } if address.nil? || address == out['address']
41
- end.compact
42
- {
43
- tid: transaction['txHash'],
44
- total_amount: outs.inject(0) { |sum, o| sum + o[:amount] },
45
- confirmations: transaction['confirmations'],
46
- outs: outs
47
- }
48
- end
49
-
50
- end
51
-
52
- end
53
- end