Skip to content

Commit 8ab3b9b

Browse files
committed
feat: add proxy support
1 parent 1ebb3df commit 8ab3b9b

File tree

4 files changed

+80
-44
lines changed

4 files changed

+80
-44
lines changed

lib/bitgo_client/client.rb

+8-4
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,26 @@ def initialize(access_token)
2727
@access_token = access_token
2828
end
2929

30-
def request(url, payload = nil, method: :get, logger: nil)
30+
def request(url, payload = nil, method: :get, logger: nil, proxy: nil)
3131
body = payload.to_json if payload
3232

3333
log logger, "Request url: #{url}, method: #{method}, body:"
3434
log logger, payload
3535

36-
request = Typhoeus::Request.new(
37-
url,
36+
options = {
3837
method: method,
3938
headers: {
4039
"Authorization" => "Bearer #{access_token}",
4140
"Content-Type" => "application/json"
4241
},
4342
body: body
44-
)
43+
}
4544

45+
unless String(proxy).empty?
46+
options[:proxy] = proxy
47+
end
48+
49+
request = Typhoeus::Request.new(url, options)
4650
request.run
4751

4852
response = request.response

lib/bitgo_client/v2.rb

+56-23
Original file line numberDiff line numberDiff line change
@@ -25,59 +25,92 @@ def client
2525
BitgoClient::Client.new(access_token)
2626
end
2727

28-
def create_address(wallet_id, coin_code: :tbtc, logger: nil)
29-
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}/address", method: :post, logger: logger)
30-
end
31-
32-
def address(wallet_id, address, coin_code: :tbtc, logger: nil)
33-
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}/address/#{address}", logger: logger)
28+
def create_address(wallet_id, coin_code: :tbtc, logger: nil, proxy: nil)
29+
client.request(
30+
"#{base_path}/#{coin_code}/wallet/#{wallet_id}/address",
31+
method: :post,
32+
logger: logger,
33+
proxy: proxy,
34+
)
3435
end
3536

36-
def fee(coin_code: :tbtc, logger: nil)
37-
client.request("#{base_path}/#{coin_code}/tx/fee", logger: logger)
37+
def address(wallet_id, address, coin_code: :tbtc, logger: nil, proxy: nil)
38+
client.request(
39+
"#{base_path}/#{coin_code}/wallet/#{wallet_id}/address/#{address}",
40+
logger: logger,
41+
proxy: proxy,
42+
)
3843
end
3944

40-
def get_transfer(wallet_id, transfer_id, coin_code: :tbtc, logger: nil)
41-
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}/transfer/#{transfer_id}", logger: logger)
45+
def fee(coin_code: :tbtc, logger: nil, proxy: nil)
46+
client.request(
47+
"#{base_path}/#{coin_code}/tx/fee",
48+
logger: logger,
49+
proxy: proxy,
50+
)
4251
end
4352

44-
def send_transaction(wallet_id, payload, coin_code: :tbtc, logger: nil)
53+
def get_transfer(wallet_id, transfer_id, coin_code: :tbtc, logger: nil, proxy: nil)
4554
client.request(
46-
"#{express_path}/api/v2/#{coin_code}/wallet/#{wallet_id}/sendcoins",
47-
payload,
48-
method: :post,
49-
logger: logger
55+
"#{base_path}/#{coin_code}/wallet/#{wallet_id}/transfer/#{transfer_id}",
56+
logger: logger,
57+
proxy: proxy,
5058
)
5159
end
5260

53-
def transactions(wallet_id, coin_code: :tbtc, logger: nil, limit: 25, prev_id: nil, all_tokens: nil)
61+
def transactions(wallet_id, coin_code: :tbtc, logger: nil, limit: 25, prev_id: nil, all_tokens: nil, proxy: nil)
5462
query_string = build_query_string(
5563
limit: limit,
5664
prevId: prev_id,
5765
allTokens: all_tokens
5866
)
5967

60-
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}/tx?#{query_string}", logger: logger)
68+
client.request(
69+
"#{base_path}/#{coin_code}/wallet/#{wallet_id}/tx?#{query_string}",
70+
logger: logger,
71+
proxy: proxy,
72+
)
6173
end
6274

63-
def transaction(wallet_id, transaction_id, coin_code: :tbtc, logger: nil)
64-
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}/tx/#{transaction_id}", logger: logger)
75+
def transaction(wallet_id, transaction_id, coin_code: :tbtc, logger: nil, proxy: nil)
76+
client.request(
77+
"#{base_path}/#{coin_code}/wallet/#{wallet_id}/tx/#{transaction_id}",
78+
logger: logger,
79+
proxy: proxy,
80+
)
6581
end
6682

67-
def transfers(wallet_id, coin_code: :tbtc, logger: nil, limit: 25, prev_id: nil, all_tokens: nil)
83+
def transfers(wallet_id, coin_code: :tbtc, logger: nil, limit: 25, prev_id: nil, all_tokens: nil, proxy: nil)
6884
query_string = build_query_string(
6985
limit: limit,
7086
prevId: prev_id,
7187
allTokens: all_tokens
7288
)
7389

74-
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}/transfer?#{query_string}", logger: logger)
90+
client.request(
91+
"#{base_path}/#{coin_code}/wallet/#{wallet_id}/transfer?#{query_string}",
92+
logger: logger,
93+
proxy: proxy,
94+
)
7595
end
7696

77-
def wallet(wallet_id, coin_code: :tbtc, logger: nil, all_tokens: nil)
97+
def wallet(wallet_id, coin_code: :tbtc, logger: nil, all_tokens: nil, proxy: nil)
7898
query_string = build_query_string(allTokens: all_tokens)
7999

80-
client.request("#{base_path}/#{coin_code}/wallet/#{wallet_id}?#{query_string}", logger: logger)
100+
client.request(
101+
"#{base_path}/#{coin_code}/wallet/#{wallet_id}?#{query_string}",
102+
logger: logger,
103+
proxy: proxy,
104+
)
105+
end
106+
107+
def send_transaction(wallet_id, payload, coin_code: :tbtc, logger: nil)
108+
client.request(
109+
"#{express_path}/api/v2/#{coin_code}/wallet/#{wallet_id}/sendcoins",
110+
payload,
111+
method: :post,
112+
logger: logger
113+
)
81114
end
82115

83116
private

spec/bitgo_client/client_spec.rb

-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
subject(:client) { described_class.new(WebmockHelper::TOKEN) }
77

88
let(:base_path) { WebmockHelper::BASE_PATH }
9-
109
let(:headers) do
1110
{
1211
"Authorization" => "Bearer #{WebmockHelper::TOKEN}",

spec/bitgo_client/v2_spec.rb

+16-16
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,15 @@
5656
it "calls client request with the correct path" do
5757
api.wallet(wallet_id)
5858

59-
expect(client).to have_received(:request).with("#{api.base_path}/tbtc/wallet/#{wallet_id}?", logger: nil)
59+
expect(client).to have_received(:request).with("#{api.base_path}/tbtc/wallet/#{wallet_id}?", logger: nil, proxy: nil)
6060
end
6161
end
6262

6363
context "with specific coin_code" do
6464
it "calls client request with the correct path" do
6565
api.wallet(wallet_id, coin_code: :xxx)
6666

67-
expect(client).to have_received(:request).with("#{api.base_path}/xxx/wallet/#{wallet_id}?", logger: nil)
67+
expect(client).to have_received(:request).with("#{api.base_path}/xxx/wallet/#{wallet_id}?", logger: nil, proxy: nil)
6868
end
6969
end
7070
end
@@ -75,7 +75,7 @@
7575
api.create_address(wallet_id)
7676

7777
expect(client).to have_received(:request)
78-
.with("#{api.base_path}/tbtc/wallet/#{wallet_id}/address", method: :post, logger: nil)
78+
.with("#{api.base_path}/tbtc/wallet/#{wallet_id}/address", method: :post, logger: nil, proxy: nil)
7979
end
8080
end
8181

@@ -84,7 +84,7 @@
8484
api.create_address(wallet_id, coin_code: :xxx)
8585

8686
expect(client).to have_received(:request)
87-
.with("#{api.base_path}/xxx/wallet/#{wallet_id}/address", method: :post, logger: nil)
87+
.with("#{api.base_path}/xxx/wallet/#{wallet_id}/address", method: :post, logger: nil, proxy: nil)
8888
end
8989
end
9090
end
@@ -97,7 +97,7 @@
9797
api.address(wallet_id, address)
9898

9999
expect(client).to have_received(:request)
100-
.with("#{api.base_path}/tbtc/wallet/#{wallet_id}/address/#{address}", logger: nil)
100+
.with("#{api.base_path}/tbtc/wallet/#{wallet_id}/address/#{address}", logger: nil, proxy: nil)
101101
end
102102
end
103103

@@ -106,7 +106,7 @@
106106
api.address(wallet_id, address, coin_code: :xxx)
107107

108108
expect(client).to have_received(:request)
109-
.with("#{api.base_path}/xxx/wallet/#{wallet_id}/address/#{address}", logger: nil)
109+
.with("#{api.base_path}/xxx/wallet/#{wallet_id}/address/#{address}", logger: nil, proxy: nil)
110110
end
111111
end
112112
end
@@ -139,7 +139,7 @@
139139
api.transactions(wallet_id)
140140

141141
expect(client).to have_received(:request)
142-
.with("#{api.base_path}/tbtc/wallet/#{wallet_id}/tx?limit=25", logger: nil)
142+
.with("#{api.base_path}/tbtc/wallet/#{wallet_id}/tx?limit=25", logger: nil, proxy: nil)
143143
end
144144
end
145145

@@ -148,7 +148,7 @@
148148
api.transactions(wallet_id, coin_code: :xxx, limit: 250, prev_id: "xxx42", all_tokens: true)
149149

150150
expect(client).to have_received(:request)
151-
.with("#{api.base_path}/xxx/wallet/#{wallet_id}/tx?allTokens=true&limit=250&prevId=xxx42", logger: nil)
151+
.with("#{api.base_path}/xxx/wallet/#{wallet_id}/tx?allTokens=true&limit=250&prevId=xxx42", logger: nil, proxy: nil)
152152
end
153153
end
154154
end
@@ -161,7 +161,7 @@
161161
api.transaction(wallet_id, tx_id)
162162

163163
expect(client).to have_received(:request)
164-
.with("#{api.base_path}/tbtc/wallet/#{wallet_id}/tx/#{tx_id}", logger: nil)
164+
.with("#{api.base_path}/tbtc/wallet/#{wallet_id}/tx/#{tx_id}", logger: nil, proxy: nil)
165165
end
166166
end
167167

@@ -170,7 +170,7 @@
170170
api.transaction(wallet_id, tx_id, coin_code: :xxx)
171171

172172
expect(client).to have_received(:request)
173-
.with("#{api.base_path}/xxx/wallet/#{wallet_id}/tx/#{tx_id}", logger: nil)
173+
.with("#{api.base_path}/xxx/wallet/#{wallet_id}/tx/#{tx_id}", logger: nil, proxy: nil)
174174
end
175175
end
176176
end
@@ -181,7 +181,7 @@
181181
api.fee
182182

183183
expect(client).to have_received(:request)
184-
.with("#{api.base_path}/tbtc/tx/fee", logger: nil)
184+
.with("#{api.base_path}/tbtc/tx/fee", logger: nil, proxy: nil)
185185
end
186186
end
187187

@@ -190,7 +190,7 @@
190190
api.fee(coin_code: :xxx)
191191

192192
expect(client).to have_received(:request)
193-
.with("#{api.base_path}/xxx/tx/fee", logger: nil)
193+
.with("#{api.base_path}/xxx/tx/fee", logger: nil, proxy: nil)
194194
end
195195
end
196196
end
@@ -201,7 +201,7 @@
201201
api.transfers(wallet_id)
202202

203203
expect(client).to have_received(:request)
204-
.with("#{api.base_path}/tbtc/wallet/#{wallet_id}/transfer?limit=25", logger: nil)
204+
.with("#{api.base_path}/tbtc/wallet/#{wallet_id}/transfer?limit=25", logger: nil, proxy: nil)
205205
end
206206
end
207207

@@ -210,7 +210,7 @@
210210
api.transfers(wallet_id, coin_code: :xxx, limit: 250, prev_id: "xxx42", all_tokens: true)
211211

212212
expect(client).to have_received(:request)
213-
.with("#{api.base_path}/xxx/wallet/#{wallet_id}/transfer?allTokens=true&limit=250&prevId=xxx42", logger: nil)
213+
.with("#{api.base_path}/xxx/wallet/#{wallet_id}/transfer?allTokens=true&limit=250&prevId=xxx42", logger: nil, proxy: nil)
214214
end
215215
end
216216
end
@@ -223,7 +223,7 @@
223223
api.get_transfer(wallet_id, tx_id)
224224

225225
expect(client).to have_received(:request)
226-
.with("#{api.base_path}/tbtc/wallet/#{wallet_id}/transfer/#{tx_id}", logger: nil)
226+
.with("#{api.base_path}/tbtc/wallet/#{wallet_id}/transfer/#{tx_id}", logger: nil, proxy: nil)
227227
end
228228
end
229229

@@ -232,7 +232,7 @@
232232
api.get_transfer(wallet_id, tx_id, coin_code: :xxx)
233233

234234
expect(client).to have_received(:request)
235-
.with("#{api.base_path}/xxx/wallet/#{wallet_id}/transfer/#{tx_id}", logger: nil)
235+
.with("#{api.base_path}/xxx/wallet/#{wallet_id}/transfer/#{tx_id}", logger: nil, proxy: nil)
236236
end
237237
end
238238
end

0 commit comments

Comments
 (0)