bitgo-client 0.1.1 → 0.1.2
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/lib/bitgo_client/client.rb +54 -4
- data/lib/bitgo_client/v2.rb +17 -12
- data/lib/bitgo_client/version.rb +1 -1
- metadata +25 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 57af0878ee90b927392baf669b14d0bf19a8888b3a9112bc668610ef457b68f9
|
4
|
+
data.tar.gz: 39ff3bf596bfa1b69273c139e5c5b8fa04e53a777a087e537619c7e3d752069e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8a668e9de0c91f5ac90844c77e91a6f9588cf3707115ecda832f320e6f7cad69af6f940530ad8481913a20021d2f89d5ad83e29f9865aa11ad2d5460a42b4ca
|
7
|
+
data.tar.gz: ecd0e52a04f3992275a8d499b6140572e45e9389d4a9bf83a95f1d8c6f283449c19ba4825ba1861f8a7bb7c64b9965e74c40a6e26d2139c0acdd18162afd3eef
|
data/lib/bitgo_client/client.rb
CHANGED
@@ -1,14 +1,38 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "logger"
|
4
|
+
|
3
5
|
module BitgoClient
|
4
6
|
class Client
|
7
|
+
SENSITIVE_KEYS = [
|
8
|
+
:backupXpub,
|
9
|
+
:keychain,
|
10
|
+
:newWalletPassphrase,
|
11
|
+
:otp,
|
12
|
+
:overrideEncryptedPrv,
|
13
|
+
:passcodeEncryptionCode,
|
14
|
+
:passphrase,
|
15
|
+
:password,
|
16
|
+
:prv,
|
17
|
+
:pub,
|
18
|
+
:userKey,
|
19
|
+
:userPassword,
|
20
|
+
:walletPassphrase,
|
21
|
+
:xprv,
|
22
|
+
]
|
23
|
+
|
5
24
|
attr_reader :access_token
|
6
25
|
|
7
26
|
def initialize(access_token)
|
8
27
|
@access_token = access_token
|
9
28
|
end
|
10
29
|
|
11
|
-
def request(url, payload = nil, method: :get)
|
30
|
+
def request(url, payload = nil, method: :get, logger: nil)
|
31
|
+
body = payload.to_json if payload
|
32
|
+
|
33
|
+
log logger, "Request url: #{url}, method: #{method}, body:"
|
34
|
+
log logger, payload
|
35
|
+
|
12
36
|
request = Typhoeus::Request.new(
|
13
37
|
url,
|
14
38
|
method: method,
|
@@ -16,16 +40,42 @@ module BitgoClient
|
|
16
40
|
"Authorization" => "Bearer #{access_token}",
|
17
41
|
"Content-Type" => "application/json"
|
18
42
|
},
|
19
|
-
body:
|
43
|
+
body: body
|
20
44
|
)
|
21
45
|
|
22
46
|
request.run
|
23
47
|
|
24
48
|
response = request.response
|
25
49
|
|
26
|
-
|
50
|
+
code = response.code
|
51
|
+
body = response.body
|
52
|
+
|
53
|
+
log logger, "Response code: '#{code}', body: '#{body}'"
|
54
|
+
|
55
|
+
if response.failure? || !code.between?(200, 300)
|
56
|
+
raise BitgoClient::Errors::RequestError.new("BitGo API response error.", response)
|
57
|
+
end
|
58
|
+
|
59
|
+
JSON.parse(body)
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def log(logger, message)
|
65
|
+
return if logger.nil?
|
66
|
+
|
67
|
+
if message.is_a?(Hash)
|
68
|
+
SENSITIVE_KEYS.each { |key| message[key] = "[FILTERED]" if message.key?(key) }
|
69
|
+
message = message.to_json
|
70
|
+
end
|
71
|
+
|
72
|
+
tag = "#{self.class}/request"
|
27
73
|
|
28
|
-
|
74
|
+
if logger.respond_to?(:tagged)
|
75
|
+
logger.tagged(tag) { logger.debug(message) }
|
76
|
+
else
|
77
|
+
logger.debug(tag) { message }
|
78
|
+
end
|
29
79
|
end
|
30
80
|
end
|
31
81
|
end
|
data/lib/bitgo_client/v2.rb
CHANGED
@@ -25,34 +25,39 @@ module BitgoClient
|
|
25
25
|
BitgoClient::Client.new(access_token)
|
26
26
|
end
|
27
27
|
|
28
|
-
def wallet(wallet_id, coin_code: :tbtc)
|
29
|
-
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}")
|
28
|
+
def wallet(wallet_id, coin_code: :tbtc, logger: nil)
|
29
|
+
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}", logger: logger)
|
30
30
|
end
|
31
31
|
|
32
|
-
def create_address(wallet_id, coin_code: :tbtc)
|
33
|
-
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}/address", method: :post)
|
32
|
+
def create_address(wallet_id, coin_code: :tbtc, logger: nil)
|
33
|
+
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}/address", method: :post, logger: logger)
|
34
34
|
end
|
35
35
|
|
36
|
-
def address(wallet_id, address, coin_code: :tbtc)
|
37
|
-
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}/address/#{address}")
|
36
|
+
def address(wallet_id, address, coin_code: :tbtc, logger: nil)
|
37
|
+
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}/address/#{address}", logger: logger)
|
38
38
|
end
|
39
39
|
|
40
|
-
def send_transaction(wallet_id, payload, coin_code: :tbtc)
|
41
|
-
client.request(
|
40
|
+
def send_transaction(wallet_id, payload, coin_code: :tbtc, logger: nil)
|
41
|
+
client.request(
|
42
|
+
"#{express_path}/api/v2/#{coin_code}/wallet/#{wallet_id}/sendcoins",
|
43
|
+
payload,
|
44
|
+
method: :post,
|
45
|
+
logger: logger
|
46
|
+
)
|
42
47
|
end
|
43
48
|
|
44
|
-
def transactions(wallet_id, coin_code: :tbtc, limit: 25, prev_id: nil, all_tokens: nil)
|
49
|
+
def transactions(wallet_id, coin_code: :tbtc, logger: nil, limit: 25, prev_id: nil, all_tokens: nil)
|
45
50
|
query_string = build_query_string(
|
46
51
|
limit: limit,
|
47
52
|
prevId: prev_id,
|
48
53
|
allTokens: all_tokens
|
49
54
|
)
|
50
55
|
|
51
|
-
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}/tx?#{query_string}")
|
56
|
+
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}/tx?#{query_string}", logger: logger)
|
52
57
|
end
|
53
58
|
|
54
|
-
def transaction(wallet_id, transaction_id, coin_code: :tbtc)
|
55
|
-
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}/tx/#{transaction_id}")
|
59
|
+
def transaction(wallet_id, transaction_id, coin_code: :tbtc, logger: nil)
|
60
|
+
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}/tx/#{transaction_id}", logger: logger)
|
56
61
|
end
|
57
62
|
|
58
63
|
private
|
data/lib/bitgo_client/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bitgo-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bruno Soares
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2.
|
19
|
+
version: '2.6'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '2.
|
26
|
+
version: '2.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: typhoeus
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,17 +53,31 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.16'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: byebug
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '10.0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry-byebug
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "<="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.6'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "<="
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '3.6'
|
69
83
|
- !ruby/object:Gem::Dependency
|
@@ -86,14 +100,14 @@ dependencies:
|
|
86
100
|
requirements:
|
87
101
|
- - "~>"
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version: '3.
|
103
|
+
version: '3.8'
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
108
|
- - "~>"
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version: '3.
|
110
|
+
version: '3.8'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: rubocop
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,14 +156,14 @@ dependencies:
|
|
142
156
|
requirements:
|
143
157
|
- - "~>"
|
144
158
|
- !ruby/object:Gem::Version
|
145
|
-
version: '3.
|
159
|
+
version: '3.5'
|
146
160
|
type: :development
|
147
161
|
prerelease: false
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
164
|
- - "~>"
|
151
165
|
- !ruby/object:Gem::Version
|
152
|
-
version: '3.
|
166
|
+
version: '3.5'
|
153
167
|
description: A Ruby client to BitGo's API and Express API.
|
154
168
|
email:
|
155
169
|
- bruno@bsoares.com
|
@@ -182,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
196
|
version: '0'
|
183
197
|
requirements: []
|
184
198
|
rubyforge_project:
|
185
|
-
rubygems_version: 2.7.6
|
199
|
+
rubygems_version: 2.7.6.2
|
186
200
|
signing_key:
|
187
201
|
specification_version: 4
|
188
202
|
summary: BitGo's API Client.
|