stellar_spectrum 1.1.2 → 1.1.3

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: 5ef61e24fd04852881c091a6155671ad2f53448d3fa699b3146fa19ce82b8f3a
4
- data.tar.gz: d89c169967f8b853331174587aacb4b7ea8c1d0016122e12890764a404787cd6
3
+ metadata.gz: 15c1e0a0f9aa47c73f9c75d915fa48156c53368f618874fcca352c2fc3724288
4
+ data.tar.gz: e53e539e65c3e3821c7f23635a255b5e3d9f2c5f6e415dd6f00f96bc1ae58bda
5
5
  SHA512:
6
- metadata.gz: a4f15d359e6c46e11f3a94b33f45c409fc9aaab50019c83d3d16dbbdf45cd08dab8c9a003c91ed47e9c8665d7431c375f04207425a22837d4bd7ab49e6778ac6
7
- data.tar.gz: 00cf1675dd97d7c8574fdc43776e8f9d720c33efdd083b07577b54477f5dfbd658ea5a3c371299e88e10fbca61373c07db9942ccb37dc4aa03c0b44493f09652
6
+ metadata.gz: 268a94fefd0608dd5bc0ad71574816b6298713f76e22a9dd648f57fcafca344fe9b9e2cb9c804b448e2f937a8c6d9b4d821b900caceafe545252dff227a227d1
7
+ data.tar.gz: e098fd73295d499bbe323b30aa9949582abe49901aa9edef2bee8da62f28bb44a2a2de64accda3ea6a17232cd60aed048d01650be40d6b1697d7aca85883c543
data/CHANGELOG.md CHANGED
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [1.1.3] - 2018-12-13
8
+ ### Fixed
9
+ - Check if the sequence number in horizon has bumped up before unlocking
10
+
7
11
  ## [1.1.2] - 2018-12-13
8
12
  ### Fixed
9
13
  - Do not blow up if `Faraday::ClientError#response` is nil
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- stellar_spectrum (1.1.2)
4
+ stellar_spectrum (1.1.3)
5
5
  activesupport
6
6
  gem_config
7
7
  light-service
@@ -8,6 +8,7 @@ require "active_support/core_ext/hash/except"
8
8
  require "active_support/core_ext/object/blank"
9
9
  require 'active_support/core_ext/integer/inflections'
10
10
  require "stellar_spectrum/services/get_available_channels"
11
+ require "stellar_spectrum/services/get_channel_account_info"
11
12
  require "stellar_spectrum/services/get_channel_accounts"
12
13
  require "stellar_spectrum/services/get_key_for_address"
13
14
  require "stellar_spectrum/services/get_locked_accounts"
@@ -18,9 +19,12 @@ require "stellar_spectrum/services/init_stellar_client"
18
19
  require "stellar_spectrum/services/lock_channel"
19
20
  require "stellar_spectrum/services/pick_channel"
20
21
  require "stellar_spectrum/services/send_payment"
22
+ require "stellar_spectrum/services/sending_payment/attempt_release_lock"
21
23
  require "stellar_spectrum/services/sending_payment/retry"
22
24
  require "stellar_spectrum/services/sending_payment/send_asset"
23
- require "stellar_spectrum/services/unlock"
25
+ require "stellar_spectrum/services/unlocking/attempt_release"
26
+ require "stellar_spectrum/services/unlocking/check_sequence_number"
27
+ require "stellar_spectrum/services/unlocking/unlock"
24
28
 
25
29
  module StellarSpectrum
26
30
 
@@ -0,0 +1,23 @@
1
+ module StellarSpectrum
2
+ class GetChannelAccountInfo
3
+
4
+ extend LightService::Action
5
+ expects :locked_accounts, :channel_account
6
+ promises :channel_account_info, :unlock_response
7
+
8
+ executed do |c|
9
+ c.channel_account_info = c.locked_accounts[c.channel_account.address]
10
+
11
+ c.unlock_response = nil
12
+ next c if c.channel_account_info.present?
13
+
14
+ c.unlock_response = true
15
+
16
+ message = "#{c.channel_account.address} has been unlocked by some " \
17
+ "other mechanism like ttl expiration or by something else, " \
18
+ "so this is a success"
19
+ c.skip_remaining!(message)
20
+ end
21
+
22
+ end
23
+ end
@@ -50,7 +50,7 @@ module StellarSpectrum
50
50
  LockChannel,
51
51
  reduce_if(->(c) {!c.successfully_locked}, SendingPayment::Retry),
52
52
  SendingPayment::SendAsset,
53
- Unlock,
53
+ SendingPayment::AttemptReleaseLock,
54
54
  ]
55
55
  end
56
56
 
@@ -0,0 +1,19 @@
1
+ module StellarSpectrum
2
+ module SendingPayment
3
+ class AttemptReleaseLock
4
+
5
+ extend LightService::Action
6
+ expects :stellar_client, :redis, :channel_account, :channel_accounts
7
+
8
+ executed do |c|
9
+ Unlocking::AttemptRelease.(
10
+ stellar_client: c.stellar_client,
11
+ redis: c.redis,
12
+ channel_account: c.channel_account,
13
+ channel_accounts: c.channel_accounts,
14
+ )
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,42 @@
1
+ module StellarSpectrum
2
+ module Unlocking
3
+ class AttemptRelease
4
+
5
+ WAIT_TIME_IN_SECONDS = 5
6
+
7
+ extend LightService::Organizer
8
+ def self.call(redis:, channel_accounts:, channel_account:, stellar_client:)
9
+ result = with(
10
+ stellar_client: stellar_client,
11
+ redis: redis,
12
+ channel_account: channel_account,
13
+ channel_accounts: channel_accounts,
14
+ ).reduce(actions)
15
+
16
+ if result.failure?
17
+ puts "Failed to unlock, retry..."
18
+ sleep WAIT_TIME_IN_SECONDS
19
+ result = self.(
20
+ stellar_client: stellar_client,
21
+ redis: redis,
22
+ channel_account: channel_account,
23
+ channel_accounts: channel_accounts,
24
+ )
25
+ end
26
+
27
+ result
28
+ end
29
+
30
+ def self.actions
31
+ [
32
+ GetLockedAccounts,
33
+ GetChannelAccountInfo,
34
+ GetSequenceNumber,
35
+ CheckSequenceNumber,
36
+ Unlock,
37
+ ]
38
+ end
39
+
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,25 @@
1
+ module StellarSpectrum
2
+ module Unlocking
3
+ class CheckSequenceNumber
4
+
5
+ extend LightService::Action
6
+ expects :current_sequence_number, :channel_account, :channel_account_info
7
+
8
+ executed do |c|
9
+ address_sequence_number = c.channel_account_info[:sequence_number].to_i
10
+ current_sequence_number = c.current_sequence_number
11
+
12
+ next c if current_sequence_number >= address_sequence_number
13
+
14
+ address = c.channel_account.address
15
+
16
+ message = "Not releasing #{address}: sequence number locked at " \
17
+ "#{address_sequence_number} is > current sequence number " \
18
+ "#{current_sequence_number}"
19
+
20
+ c.fail_and_return! message
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,17 @@
1
+ module StellarSpectrum
2
+ module Unlocking
3
+ class Unlock
4
+
5
+ extend LightService::Action
6
+ expects :redis, :channel_account
7
+ promises :unlock_response
8
+
9
+ executed do |c|
10
+ address_key = GetKeyForAddress.execute(c.channel_account.address)
11
+ puts "Will unlock #{address_key}"
12
+ c.unlock_response = c.redis.del(address_key)
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module StellarSpectrum
2
- VERSION = "1.1.2"
2
+ VERSION = "1.1.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stellar_spectrum
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ramon Tayag
@@ -176,6 +176,7 @@ files:
176
176
  - lib/stellar_spectrum.rb
177
177
  - lib/stellar_spectrum/client.rb
178
178
  - lib/stellar_spectrum/services/get_available_channels.rb
179
+ - lib/stellar_spectrum/services/get_channel_account_info.rb
179
180
  - lib/stellar_spectrum/services/get_channel_accounts.rb
180
181
  - lib/stellar_spectrum/services/get_key_for_address.rb
181
182
  - lib/stellar_spectrum/services/get_locked_accounts.rb
@@ -186,9 +187,12 @@ files:
186
187
  - lib/stellar_spectrum/services/lock_channel.rb
187
188
  - lib/stellar_spectrum/services/pick_channel.rb
188
189
  - lib/stellar_spectrum/services/send_payment.rb
190
+ - lib/stellar_spectrum/services/sending_payment/attempt_release_lock.rb
189
191
  - lib/stellar_spectrum/services/sending_payment/retry.rb
190
192
  - lib/stellar_spectrum/services/sending_payment/send_asset.rb
191
- - lib/stellar_spectrum/services/unlock.rb
193
+ - lib/stellar_spectrum/services/unlocking/attempt_release.rb
194
+ - lib/stellar_spectrum/services/unlocking/check_sequence_number.rb
195
+ - lib/stellar_spectrum/services/unlocking/unlock.rb
192
196
  - lib/stellar_spectrum/version.rb
193
197
  - stellar_spectrum.gemspec
194
198
  homepage: https://github.com/bloom-solutions/stellar_spectrum-ruby
@@ -1,14 +0,0 @@
1
- module StellarSpectrum
2
- class Unlock
3
-
4
- extend LightService::Action
5
- expects :redis, :channel_account
6
- promises :unlock_response
7
-
8
- executed do |c|
9
- address_key = GetKeyForAddress.execute(c.channel_account.address)
10
- c.unlock_response = c.redis.del(address_key)
11
- end
12
-
13
- end
14
- end