peatio-bitgo 2.5.2 → 2.6.0

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: 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