bitgo-client 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: 9610d4a33a131c5f89c0ee714e6bdf422365c9a224c6063c3922f6e32e45c4f0
4
- data.tar.gz: 83ce8d9a85b9fb38ed6c8a3acfe92e2dbb4fc3b2e181737c02d55731b1345ae2
3
+ metadata.gz: 57af0878ee90b927392baf669b14d0bf19a8888b3a9112bc668610ef457b68f9
4
+ data.tar.gz: 39ff3bf596bfa1b69273c139e5c5b8fa04e53a777a087e537619c7e3d752069e
5
5
  SHA512:
6
- metadata.gz: 8f95003126d309b29bf611eeb372ca8ec0e956cc4c3bd0bb0eda15803a84044ad0cb5788f28480912f095b21391024a00bb595b6b0947296b0cb40229106b514
7
- data.tar.gz: 7457a9d64a4b7070496597fa57a40899adc04daf9f3a681c13f79b4b9cd73a0ffe0d1cb5bd7d18f6df415bed64ed8c3cbcc92aa16f1b4c2d853bf676baff1a26
6
+ metadata.gz: e8a668e9de0c91f5ac90844c77e91a6f9588cf3707115ecda832f320e6f7cad69af6f940530ad8481913a20021d2f89d5ad83e29f9865aa11ad2d5460a42b4ca
7
+ data.tar.gz: ecd0e52a04f3992275a8d499b6140572e45e9389d4a9bf83a95f1d8c6f283449c19ba4825ba1861f8a7bb7c64b9965e74c40a6e26d2139c0acdd18162afd3eef
@@ -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: (payload ? payload.to_json : nil)
43
+ body: body
20
44
  )
21
45
 
22
46
  request.run
23
47
 
24
48
  response = request.response
25
49
 
26
- raise BitgoClient::Errors::RequestError.new("BitGo API response error.", response) if response.failure?
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
- JSON.parse(response.body)
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
@@ -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("#{express_path}/api/v2/#{coin_code}/wallet/#{wallet_id}/sendcoins", payload, method: :post)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BitgoClient
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
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.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: 2018-04-24 00:00:00.000000000 Z
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.5'
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.5'
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: pry-byebug
56
+ name: byebug
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '3.6'
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.0'
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.0'
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.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.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.