peatio-bitgo 2.5.1 → 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: 4253a3ca3970f150214e76a1a31fd3f7d09bc8fbb181abd790048278859c9fcb
4
- data.tar.gz: 0fa8a23a04582bc62ca5959a616410b30b1438d2bb1d2d30da317ec2928e4071
3
+ metadata.gz: 274572ccfc7d17e3150b4271d2872fda747aff0684a50e21c8bb74382e0c437f
4
+ data.tar.gz: f90adec7c757956565af265400011033a73902348ee1a1d98393ea51e83e2ab1
5
5
  SHA512:
6
- metadata.gz: fb144800c2f5732e2a19191882157d04ce0f0fd76b7fa1134d3eae3988b9e95df8b2bee3c622355f25558ac545a2f3d924ffbcecec2415f553ac67ecc04479cc
7
- data.tar.gz: 3a92e09b6b1e900790caa6aa028fd1a8251012eb45b23a8c3bac151f8b2f2d6e49cdb6915d04a57ed60b0fc85384d10073e5b2031cdd88548e9910e3e7a90b3c
6
+ metadata.gz: 58ec57b436b4e5d43d71d3b6db335e36cb4e0c49fac46a9495c2bfdfc1bcf3909577ba1367641bc3a3357adb2779bb515270d285662fdfa9ed0cef62526c49b7
7
+ data.tar.gz: 8fc3e3d276680e91140264bc3ab9d32648632598484dd23ddebdb36d4b79612eb14a585d902ac12585a8b92831e4db4712b3d6444e6ef0ed12c932fab98ae71a
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- peatio-bitgo (2.5.1)
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.3)
16
- activesupport (= 5.2.4.3)
17
- activesupport (5.2.4.3)
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.16.1)
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.7)
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.6)
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)
@@ -58,32 +58,32 @@ GEM
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.5)
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.1)
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.1)
86
+ peatio (2.4.4)
87
87
  activemodel (> 5.2, <= 6.0.0)
88
88
  amqp
89
89
  bunny
@@ -97,29 +97,29 @@ 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
124
  thin (1.7.2)
125
125
  daemons (~> 1.0, >= 1.0.9)
@@ -132,9 +132,9 @@ GEM
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.1"
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}")
@@ -184,7 +169,7 @@ module Peatio
184
169
 
185
170
  def address_confirmation_webhook(url)
186
171
  client.rest_api(:post, "#{currency_id}/wallet/#{wallet_id}/webhooks", {
187
- type: 'address_confirmation',
172
+ type: 'address_confirmation_webhook',
188
173
  allToken: true,
189
174
  url: url,
190
175
  label: "webhook for #{url}",
@@ -222,25 +207,19 @@ module Peatio
222
207
  end
223
208
 
224
209
  def xlm_memo(address)
225
- build_xlm_memo(address) if @currency.fetch(:id) == 'xlm'
226
- end
227
-
228
- def build_xlm_memo(address)
229
- case address.split('?').last.split('=').first
230
- when 'memoId'
231
- memo_value_from(address, 'memoId')
232
- when 'memoText'
233
- memo_value_from(address, 'memoText')
234
- when 'memoHash'
235
- memo_value_from(address, 'memoHash')
236
- when 'memoReturn'
237
- memo_value_from(address, 'memoReturn')
210
+ if @currency.fetch(:id) == 'xlm'
211
+ {
212
+ type: "id",
213
+ value: "#{memo_id_from(address)}"
214
+ }
238
215
  end
239
216
  end
240
217
 
241
- def memo_value_from(address, type)
242
- memo_value = address.partition(type + '=').last
243
- 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
244
223
  end
245
224
 
246
225
  def currency_id
@@ -255,14 +234,6 @@ module Peatio
255
234
  @wallet.fetch(:wallet_id)
256
235
  end
257
236
 
258
- def normalize_address(address)
259
- if @currency.fetch(:id) == 'xlm'
260
- address.split('?').first
261
- else
262
- address
263
- end
264
- end
265
-
266
237
  def normalize_txid(txid)
267
238
  txid.downcase
268
239
  end
@@ -281,13 +252,9 @@ module Peatio
281
252
  x.to_i
282
253
  end
283
254
 
284
- def time_difference_in_minutes(updated_at)
285
- (Time.now - updated_at)/60
286
- end
287
-
288
255
  def define_transaction_state(state)
289
256
  case state
290
- when 'unconfirmed'
257
+ when 'unconfrimed'
291
258
  'pending'
292
259
  when 'confirmed'
293
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.1
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: 2020-08-24 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