peatio-bitgo 2.5.2 → 2.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: acdc8edfa1495b5fe9d11d0396c34c36e086dd4594289745e66c506a61b72194
4
- data.tar.gz: ec04b54eb43a007e4e0bd02c9ec3efbc333b76da239b876ba73c251ac23563a4
3
+ metadata.gz: 274572ccfc7d17e3150b4271d2872fda747aff0684a50e21c8bb74382e0c437f
4
+ data.tar.gz: f90adec7c757956565af265400011033a73902348ee1a1d98393ea51e83e2ab1
5
5
  SHA512:
6
- metadata.gz: 44d662cd396e174301f130c25e2904fef5f1cfcbd47aa9090c81ed65a6b1422682ebf78ef80c8d9c34008763252b9432cc6aef72748f615361d94da0bb77bccd
7
- data.tar.gz: 40ba65fa72eeaf02f69153a394a8ac4a177f50ea06ed4ce86217209865c82d6e37e8d6c13c5056d877dd40719bd53ffbe2d3331e2faf14383a39aa00dffefa78
6
+ metadata.gz: 58ec57b436b4e5d43d71d3b6db335e36cb4e0c49fac46a9495c2bfdfc1bcf3909577ba1367641bc3a3357adb2779bb515270d285662fdfa9ed0cef62526c49b7
7
+ data.tar.gz: 8fc3e3d276680e91140264bc3ab9d32648632598484dd23ddebdb36d4b79612eb14a585d902ac12585a8b92831e4db4712b3d6444e6ef0ed12c932fab98ae71a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- peatio-bitgo (2.5.2)
4
+ peatio-bitgo (2.6.0)
5
5
  activesupport (~> 5.2.3)
6
6
  better-faraday (~> 1.0.5)
7
7
  faraday (~> 0.17)
@@ -12,35 +12,35 @@ PATH
12
12
  GEM
13
13
  remote: https://rubygems.org/
14
14
  specs:
15
- activemodel (5.2.4.5)
16
- activesupport (= 5.2.4.5)
17
- activesupport (5.2.4.5)
15
+ activemodel (5.2.4.2)
16
+ activesupport (= 5.2.4.2)
17
+ activesupport (5.2.4.2)
18
18
  concurrent-ruby (~> 1.0, >= 1.0.2)
19
19
  i18n (>= 0.7, < 2)
20
20
  minitest (~> 5.1)
21
21
  tzinfo (~> 1.1)
22
22
  addressable (2.7.0)
23
23
  public_suffix (>= 2.0.2, < 5.0)
24
- amq-protocol (2.3.2)
24
+ amq-protocol (2.3.1)
25
25
  amqp (1.8.0)
26
26
  amq-protocol (>= 2.2.0)
27
27
  eventmachine
28
28
  better-faraday (1.0.8)
29
29
  activesupport (>= 4.0, < 6.0)
30
30
  faraday (~> 0.12)
31
- bunny (2.17.0)
31
+ bunny (2.15.0)
32
32
  amq-protocol (~> 2.3, >= 2.3.1)
33
- byebug (11.1.3)
34
- clamp (1.3.2)
35
- coderay (1.1.3)
36
- concurrent-ruby (1.1.8)
37
- connection_pool (2.2.3)
33
+ byebug (11.1.1)
34
+ clamp (1.3.1)
35
+ coderay (1.1.2)
36
+ concurrent-ruby (1.1.6)
37
+ connection_pool (2.2.2)
38
38
  cookiejar (0.3.3)
39
39
  crack (0.4.3)
40
40
  safe_yaml (~> 1.0.0)
41
41
  daemons (1.3.1)
42
- diff-lcs (1.4.4)
43
- em-http-request (1.1.7)
42
+ diff-lcs (1.3)
43
+ em-http-request (1.1.5)
44
44
  addressable (>= 2.3.4)
45
45
  cookiejar (!= 0.3.1)
46
46
  em-socksify (>= 0.3)
@@ -50,40 +50,40 @@ GEM
50
50
  eventmachine (>= 1.0.0.beta.4)
51
51
  em-synchrony (1.0.6)
52
52
  eventmachine (>= 1.0.0.beta.1)
53
- em-websocket (0.5.2)
53
+ em-websocket (0.5.1)
54
54
  eventmachine (>= 0.12.9)
55
55
  http_parser.rb (~> 0.6.0)
56
56
  eventmachine (1.2.7)
57
- faraday (0.17.4)
57
+ faraday (0.17.3)
58
58
  multipart-post (>= 1.2, < 3)
59
59
  faraday_middleware (0.13.1)
60
60
  faraday (>= 0.7.4, < 1.0)
61
- faye (1.4.0)
61
+ faye (1.2.5)
62
62
  cookiejar (>= 0.3.0)
63
- em-http-request (>= 1.1.6)
63
+ em-http-request (>= 0.3.0)
64
64
  eventmachine (>= 0.12.0)
65
- faye-websocket (>= 0.11.0)
65
+ faye-websocket (>= 0.9.1)
66
66
  multi_json (>= 1.0.0)
67
67
  rack (>= 1.0.0)
68
68
  websocket-driver (>= 0.5.1)
69
- faye-websocket (0.11.0)
69
+ faye-websocket (0.10.9)
70
70
  eventmachine (>= 0.12.0)
71
71
  websocket-driver (>= 0.5.1)
72
72
  hashdiff (1.0.1)
73
73
  http_parser.rb (0.6.0)
74
- i18n (1.8.9)
74
+ i18n (1.8.2)
75
75
  concurrent-ruby (~> 1.0)
76
- jwt (2.2.2)
76
+ jwt (2.2.1)
77
77
  memoist (0.16.2)
78
78
  method_source (1.0.0)
79
- minitest (5.14.4)
79
+ minitest (5.14.0)
80
80
  mocha (1.11.2)
81
- multi_json (1.15.0)
81
+ multi_json (1.14.1)
82
82
  multipart-post (2.1.1)
83
83
  mysql2 (0.5.3)
84
84
  net-http-persistent (3.0.1)
85
85
  connection_pool (~> 2.2)
86
- peatio (2.6.3)
86
+ peatio (2.4.4)
87
87
  activemodel (> 5.2, <= 6.0.0)
88
88
  amqp
89
89
  bunny
@@ -97,44 +97,44 @@ GEM
97
97
  mysql2
98
98
  prometheus-client
99
99
  thin
100
- prometheus-client (2.1.0)
101
- pry (0.13.1)
100
+ prometheus-client (2.0.0)
101
+ pry (0.13.0)
102
102
  coderay (~> 1.1)
103
103
  method_source (~> 1.0)
104
104
  pry-byebug (3.9.0)
105
105
  byebug (~> 11.0)
106
106
  pry (~> 0.13.0)
107
- public_suffix (4.0.5)
108
- rack (2.2.3)
107
+ public_suffix (4.0.4)
108
+ rack (2.2.2)
109
109
  rake (13.0.1)
110
110
  rspec (3.9.0)
111
111
  rspec-core (~> 3.9.0)
112
112
  rspec-expectations (~> 3.9.0)
113
113
  rspec-mocks (~> 3.9.0)
114
- rspec-core (3.9.2)
115
- rspec-support (~> 3.9.3)
116
- rspec-expectations (3.9.2)
114
+ rspec-core (3.9.1)
115
+ rspec-support (~> 3.9.1)
116
+ rspec-expectations (3.9.1)
117
117
  diff-lcs (>= 1.2.0, < 2.0)
118
118
  rspec-support (~> 3.9.0)
119
119
  rspec-mocks (3.9.1)
120
120
  diff-lcs (>= 1.2.0, < 2.0)
121
121
  rspec-support (~> 3.9.0)
122
- rspec-support (3.9.3)
122
+ rspec-support (3.9.2)
123
123
  safe_yaml (1.0.5)
124
- thin (1.8.0)
124
+ thin (1.7.2)
125
125
  daemons (~> 1.0, >= 1.0.9)
126
126
  eventmachine (~> 1.0, >= 1.0.4)
127
127
  rack (>= 1, < 3)
128
128
  thread_safe (0.3.6)
129
- tzinfo (1.2.9)
129
+ tzinfo (1.2.7)
130
130
  thread_safe (~> 0.1)
131
131
  webmock (3.8.3)
132
132
  addressable (>= 2.3.6)
133
133
  crack (>= 0.3.2)
134
134
  hashdiff (>= 0.4.0, < 2.0.0)
135
- websocket-driver (0.7.3)
135
+ websocket-driver (0.7.1)
136
136
  websocket-extensions (>= 0.1.0)
137
- websocket-extensions (0.1.5)
137
+ websocket-extensions (0.1.4)
138
138
 
139
139
  PLATFORMS
140
140
  ruby
@@ -5,7 +5,7 @@ module Peatio
5
5
  module Bitgo
6
6
  class Client
7
7
  Error = Class.new(StandardError)
8
- class ConnectionError < Error; end
8
+ ConnectionError = Class.new(Error)
9
9
 
10
10
  class ResponseError < Error
11
11
  def initialize(msg)
@@ -48,8 +48,6 @@ module Peatio
48
48
  else
49
49
  raise ConnectionError, JSON.parse(e.response.body)['message']
50
50
  end
51
- rescue StandardError => e
52
- raise Error, e
53
51
  end
54
52
  end
55
53
  end
@@ -1,5 +1,5 @@
1
1
  module Peatio
2
2
  module Bitgo
3
- VERSION = "2.5.2"
3
+ VERSION = "2.6.0".freeze
4
4
  end
5
5
  end
@@ -1,8 +1,6 @@
1
1
  module Peatio
2
2
  module Bitgo
3
3
  class Wallet < Peatio::Wallet::Abstract
4
- TIME_DIFFERENCE_IN_MINUTES = 10
5
- XLM_MEMO_TYPES = { 'memoId': 'id', 'memoText': 'text', 'memoHash': 'hash', 'memoReturn': 'return' }
6
4
 
7
5
  def initialize(settings = {})
8
6
  @settings = settings
@@ -26,14 +24,10 @@ module Peatio
26
24
  def create_address!(options = {})
27
25
  currency = erc20_currency_id
28
26
  options.deep_symbolize_keys!
29
-
30
- if options.dig(:pa_details, :address_id).present? &&
31
- options.dig(:pa_details, :updated_at).present? &&
32
- time_difference_in_minutes(options.dig(:pa_details, :updated_at)) >= TIME_DIFFERENCE_IN_MINUTES
33
-
27
+ if options.dig(:pa_details,:address_id).present?
34
28
  response = client.rest_api(:get, "#{currency}/wallet/#{wallet_id}/address/#{options.dig(:pa_details, :address_id)}")
35
29
  { address: response['address'], secret: bitgo_wallet_passphrase }
36
- elsif options.dig(:pa_details, :address_id).blank?
30
+ else
37
31
  response = client.rest_api(:post, "#{currency}/wallet/#{wallet_id}/address")
38
32
  { address: response['address'], secret: bitgo_wallet_passphrase, details: { address_id: response['id'] }}
39
33
  end
@@ -58,7 +52,7 @@ module Peatio
58
52
  end
59
53
 
60
54
  txid = client.rest_api(:post, "#{currency_id}/wallet/#{wallet_id}/sendcoins", {
61
- address: normalize_address(transaction.to_address.to_s),
55
+ address: transaction.to_address.to_s,
62
56
  amount: amount.to_s,
63
57
  walletPassphrase: bitgo_wallet_passphrase,
64
58
  memo: xlm_memo(transaction.to_address.to_s)
@@ -117,15 +111,14 @@ module Peatio
117
111
  end
118
112
 
119
113
  def trigger_webhook_event(event)
120
- currency = @wallet.fetch(:testnet).present? ? 't' + @currency.fetch(:id) : @currency.fetch(:id)
121
- return unless currency == event['coin'] && @wallet.fetch(:wallet_id) == event['wallet']
114
+ currency_id = @wallet.fetch(:testnet).present? ? 't' + @currency.fetch(:id) : @currency.fetch(:id)
115
+ return unless currency_id == event['coin'] && @wallet.fetch(:wallet_id) == event['wallet']
122
116
 
123
117
  if event['type'] == 'transfer'
124
118
  transactions = fetch_transfer!(event['transfer'])
125
119
  return { transfers: transactions }
126
- elsif event['type'] == 'address_confirmation'
127
- address_id = fetch_address_id(event['address'])
128
- return { address_id: address_id, currency_id: currency_id }
120
+ elsif event['address_confirmation']
121
+ # TODO Add Address confirmation
129
122
  end
130
123
  end
131
124
 
@@ -134,14 +127,6 @@ module Peatio
134
127
  address_confirmation_webhook(url)
135
128
  end
136
129
 
137
- def fetch_address_id(address)
138
- currency = erc20_currency_id
139
- client.rest_api(:get, "#{currency}/wallet/#{wallet_id}/address/#{address}")
140
- .fetch('id')
141
- rescue Bitgo::Client::Error => e
142
- raise Peatio::Wallet::ClientError, e
143
- end
144
-
145
130
  def fetch_transfer!(id)
146
131
  # TODO: Add Rspecs for this one
147
132
  response = client.rest_api(:get, "#{currency_id}/wallet/#{wallet_id}/transfer/#{id}")
@@ -161,7 +146,8 @@ module Peatio
161
146
  hash: normalize_txid(response['txid']),
162
147
  to_address: to_address,
163
148
  block_number: response['height'],
164
- txout: response['index'].to_i,
149
+ # TODO: Add sendmany support
150
+ txout: 0,
165
151
  status: state
166
152
  )
167
153
 
@@ -183,7 +169,7 @@ module Peatio
183
169
 
184
170
  def address_confirmation_webhook(url)
185
171
  client.rest_api(:post, "#{currency_id}/wallet/#{wallet_id}/webhooks", {
186
- type: 'address_confirmation',
172
+ type: 'address_confirmation_webhook',
187
173
  allToken: true,
188
174
  url: url,
189
175
  label: "webhook for #{url}",
@@ -221,25 +207,19 @@ module Peatio
221
207
  end
222
208
 
223
209
  def xlm_memo(address)
224
- build_xlm_memo(address) if @currency.fetch(:id) == 'xlm'
225
- end
226
-
227
- def build_xlm_memo(address)
228
- case address.split('?').last.split('=').first
229
- when 'memoId'
230
- memo_value_from(address, 'memoId')
231
- when 'memoText'
232
- memo_value_from(address, 'memoText')
233
- when 'memoHash'
234
- memo_value_from(address, 'memoHash')
235
- when 'memoReturn'
236
- memo_value_from(address, 'memoReturn')
210
+ if @currency.fetch(:id) == 'xlm'
211
+ {
212
+ type: "id",
213
+ value: "#{memo_id_from(address)}"
214
+ }
237
215
  end
238
216
  end
239
217
 
240
- def memo_value_from(address, type)
241
- memo_value = address.partition(type + '=').last
242
- return { type: XLM_MEMO_TYPES[type.to_sym], value: memo_value } if memo_value.present?
218
+ def memo_id_from(address)
219
+ memo_id = address.partition('memoId=').last
220
+ memo_id = 0 if memo_id.empty?
221
+
222
+ memo_id
243
223
  end
244
224
 
245
225
  def currency_id
@@ -254,14 +234,6 @@ module Peatio
254
234
  @wallet.fetch(:wallet_id)
255
235
  end
256
236
 
257
- def normalize_address(address)
258
- if @currency.fetch(:id) == 'xlm'
259
- address.split('?').first
260
- else
261
- address
262
- end
263
- end
264
-
265
237
  def normalize_txid(txid)
266
238
  txid.downcase
267
239
  end
@@ -280,13 +252,9 @@ module Peatio
280
252
  x.to_i
281
253
  end
282
254
 
283
- def time_difference_in_minutes(updated_at)
284
- (Time.now - updated_at)/60
285
- end
286
-
287
255
  def define_transaction_state(state)
288
256
  case state
289
- when 'unconfirmed'
257
+ when 'unconfrimed'
290
258
  'pending'
291
259
  when 'confirmed'
292
260
  'success'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peatio-bitgo
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.2
4
+ version: 2.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nadia Ch., Maksym N.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-15 00:00:00.000000000 Z
11
+ date: 2020-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport