blocktrail 0.1.1 → 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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/blocktrail.gemspec +1 -0
- data/examples/simple_data_api_usage.rb +4 -0
- data/lib/blocktrail/client.rb +53 -11
- data/lib/blocktrail/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8da1ca5d1737c659ec931c03a3cd92f74e9d8ad6
|
4
|
+
data.tar.gz: e8100d3c06b043db500fa6b16344b1b8152e1af9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be245e748cf019b3cbe3091bb9614dcb9ecf4defe2a0f2a8e1506b4a14a4860c2876a8758a5d16bcf148ad424948debac4f9df0ebadb44573bb520b30edf3d5d
|
7
|
+
data.tar.gz: bcccaa6f01747cc4dddfe6a58d841422a734e7b3bdbb0ad81cc403207c625b5dafb2d77986648518a57947f48f34a66057808cde9f34c729ee887cbc79eef6da
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@ BlockTrail Ruby SDK
|
|
2
2
|
=====================
|
3
3
|
This is the BlockTrail Ruby SDK. This SDK contains methods for easily interacting with the BlockTrail API.
|
4
4
|
|
5
|
-
[](https://badge.fury.io/rb/blocktrail)
|
6
6
|
|
7
7
|
IMPORTANT! FLOATS ARE EVIL!!
|
8
8
|
----------------------------
|
data/blocktrail.gemspec
CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
24
|
spec.add_dependency "rest-client", "~> 2.0"
|
25
|
+
spec.add_dependency "api-auth", "~> 2.1"
|
25
26
|
|
26
27
|
spec.add_development_dependency "bundler", "~> 1.14"
|
27
28
|
spec.add_development_dependency "rake", "~> 10.0"
|
@@ -5,3 +5,7 @@ client = Blocktrail::Client.new('YOUR_API_KEY_HERE', 'YOUR_API_SECRET_HERE')
|
|
5
5
|
address = client.address('1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp')
|
6
6
|
client.price
|
7
7
|
client.address_transactions('1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp')['data']
|
8
|
+
client.verify_address('16dwJmR4mX5RguGrocMfN9Q9FR2kZcLw2z', 'HPMOHRgPSMKdXrU6AqQs/i9S7alOakkHsJiqLGmInt05Cxj6b/WhS7kJxbIQxKmDW08YKzoFnbVZIoTI2qofEzk=')
|
9
|
+
|
10
|
+
# with testnet and debug info
|
11
|
+
client = Blocktrail::Client.new('YOUR_API_KEY_HERE', 'YOUR_API_SECRET_HERE', 'v1', true, true)
|
data/lib/blocktrail/client.rb
CHANGED
@@ -2,6 +2,7 @@ require 'rest-client'
|
|
2
2
|
require 'digest/md5'
|
3
3
|
require 'json'
|
4
4
|
require 'blocktrail/exceptions'
|
5
|
+
require 'api-auth'
|
5
6
|
|
6
7
|
module Blocktrail
|
7
8
|
class Client
|
@@ -27,8 +28,7 @@ module Blocktrail
|
|
27
28
|
{
|
28
29
|
'Content-Type' => 'application/json',
|
29
30
|
'User-Agent': "#{Blocktrail::SDK_USER_AGENT}/#{Blocktrail::VERSION}",
|
30
|
-
'Date': Time.now.utc.iso8601
|
31
|
-
'Content-MD5': Digest::MD5.hexdigest('')
|
31
|
+
'Date': Time.now.utc.iso8601
|
32
32
|
}
|
33
33
|
end
|
34
34
|
|
@@ -69,19 +69,23 @@ module Blocktrail
|
|
69
69
|
end
|
70
70
|
|
71
71
|
def address_transactions(address, page = 1, limit = 20, sort_dir = 'asc')
|
72
|
-
get("/address/#{address}/transactions",
|
72
|
+
get("/address/#{address}/transactions", {}, params: { page: page, limit: limit, sort_dir: sort_dir })
|
73
73
|
end
|
74
74
|
|
75
75
|
def address_unconfirmed_transactions(address, page = 1, limit = 20, sort_dir = 'asc')
|
76
|
-
get("/address/#{address}/unconfirmed-transactions",
|
76
|
+
get("/address/#{address}/unconfirmed-transactions", {}, params: { page: page, limit: limit, sort_dir: sort_dir })
|
77
77
|
end
|
78
78
|
|
79
79
|
def address_unspent_outputs(address, page = 1, limit = 20, sort_dir = 'asc')
|
80
|
-
get("/address/#{address}/unspent-outputs",
|
80
|
+
get("/address/#{address}/unspent-outputs", {}, params: { page: page, limit: limit, sort_dir: sort_dir })
|
81
|
+
end
|
82
|
+
|
83
|
+
def verify_address(address, signature)
|
84
|
+
post("/address/#{address}/verify", { signature: signature })
|
81
85
|
end
|
82
86
|
|
83
87
|
def all_blocks(page = 1, limit = 20, sort_dir = 'asc')
|
84
|
-
get("/all-blocks",
|
88
|
+
get("/all-blocks", {}, params: { page: page, limit: limit, sort_dir: sort_dir })
|
85
89
|
end
|
86
90
|
|
87
91
|
def block_latest
|
@@ -93,7 +97,7 @@ module Blocktrail
|
|
93
97
|
end
|
94
98
|
|
95
99
|
def block_transactions(block, page = 1, limit = 20, sort_dir = 'asc')
|
96
|
-
get("/block/#{block}/transactions",
|
100
|
+
get("/block/#{block}/transactions", {}, params: { page: page, limit: limit, sort_dir: sort_dir })
|
97
101
|
end
|
98
102
|
|
99
103
|
def transaction(txhash)
|
@@ -101,7 +105,7 @@ module Blocktrail
|
|
101
105
|
end
|
102
106
|
|
103
107
|
def all_webhooks(page = 1, limit = 20)
|
104
|
-
get("/webhooks",
|
108
|
+
get("/webhooks", {}, params: { page: page, limit: limit })
|
105
109
|
end
|
106
110
|
|
107
111
|
def webhook(identifier)
|
@@ -109,21 +113,59 @@ module Blocktrail
|
|
109
113
|
end
|
110
114
|
|
111
115
|
def webhook_events(identifier, page = 1, limit = 20)
|
112
|
-
get("/webhook/#{identifier}/events",
|
116
|
+
get("/webhook/#{identifier}/events", {}, params: { page: page, limit: limit })
|
113
117
|
end
|
114
118
|
|
115
119
|
def price
|
116
120
|
get("/price")
|
117
121
|
end
|
118
122
|
|
123
|
+
# Payments API
|
124
|
+
|
125
|
+
def all_wallets(page = 1, limit = 20)
|
126
|
+
get("/wallets", nil, {}, params: { page: page, limit: limit })
|
127
|
+
end
|
128
|
+
|
129
|
+
def get_wallet(identifier)
|
130
|
+
get("/wallet/#{identifier}")
|
131
|
+
end
|
132
|
+
|
133
|
+
def get_wallet_balance(identifier)
|
134
|
+
get("/wallet/#{identifier}/balance")
|
135
|
+
end
|
136
|
+
|
137
|
+
def wallet_discovery(identifier, gap = 200)
|
138
|
+
get("/wallet/#{identifier}/discovery", {}, params: { gap: gap })
|
139
|
+
end
|
140
|
+
|
141
|
+
def get_new_derivation(identifier, path)
|
142
|
+
post("/wallet/#{identifier}/path", { path: path })
|
143
|
+
end
|
144
|
+
|
119
145
|
private
|
120
146
|
|
121
147
|
def request(method, url, payload = {}, headers = {})
|
122
148
|
url = "https://api.blocktrail.com/#{api_version}/#{testnet ? 't' : ''}btc#{url}"
|
123
|
-
|
149
|
+
|
150
|
+
headers['Content-MD5'] = if payload.empty?
|
151
|
+
Digest::MD5.hexdigest('') # needs url here
|
152
|
+
else
|
153
|
+
Digest::MD5.hexdigest(payload.to_json)
|
154
|
+
end
|
155
|
+
|
156
|
+
headers && headers[:params] ? headers[:params].merge!(default_params) : headers[:params] = default_params
|
157
|
+
headers = default_headers.merge(headers)
|
124
158
|
payload = payload.to_json
|
159
|
+
if debug
|
160
|
+
puts 'URL: ' + url.inspect
|
161
|
+
puts 'Headers: ' + headers.inspect
|
162
|
+
puts 'Payload: ' + payload.inspect
|
163
|
+
end
|
164
|
+
|
165
|
+
request = RestClient::Request.new(method: method, url: url, payload: payload, headers: headers)
|
166
|
+
signed_request = ApiAuth.sign!(request, api_key, api_secret, digest: 'sha256')
|
167
|
+
response = signed_request.execute
|
125
168
|
|
126
|
-
response = RestClient::Request.execute(method: method, url: url, payload: payload, headers: headers)
|
127
169
|
if debug
|
128
170
|
puts 'Request: ' + response.request.inspect
|
129
171
|
puts 'Status code: ' + response.code.inspect
|
data/lib/blocktrail/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blocktrail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuri Skurikhin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: api-auth
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.1'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|