stellar_base-rails 0.10.0 → 1.0.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: 6677436084a32e990d54bd12bd420fb59962e1fb89cb7dd23c54c26a2f347095
4
- data.tar.gz: a7d9291dd36fa0778b4c107484b7e423deb9436ca1a45cb7d7e5a7f8d14a05b8
3
+ metadata.gz: fe6ab9692dc15944adea8f2affafcab9609080fa16175e95a1a1cb367202b6b4
4
+ data.tar.gz: 59bb102aa75f2572234d6f1c014ec35352fee2028f2e8e7b792f063ed7fa6202
5
5
  SHA512:
6
- metadata.gz: 0b868d78007d88685e684881286d10712455f273e46f676d29734ee38e7667f9a037daacc17b7759c953714cf712eb795ee452ab65297df591c4710656625d7d
7
- data.tar.gz: '06744869debd5c6d71fd38b92e9d2e77bdf8cc65cc8282bd01b6b594591ccd09ceb49e447efc2f5da6eea5ca090fe65ef59e69ce56f37f23853f4e7335407ea5'
6
+ metadata.gz: a572745d496c2b637385b5a64148575e8a4834d9bac7aec469666296663dc6e2b0e9cba7377266cbf8b713c6e76952182ba10cc21cada936508e5033adaff1de
7
+ data.tar.gz: 850fca96dead1e7d409ca7f8001751412d7f9b37e3dedc1b12690345158fc12c4879aaa7a7767da37871407d24f0420a4d9c62962e754ef7166d1058c6c29915
data/README.md CHANGED
@@ -76,6 +76,21 @@ https://example.com/stellar/
76
76
  https://example.com/
77
77
  ```
78
78
 
79
+ #### c.sending_strategy
80
+
81
+ By default, this engine uses [ruby-stellar-sdk](https://github.com/stellar/ruby-stellar-sdk) to send assets. This does not have support for multi-process friendly distribution of assets.
82
+
83
+ One may opt to use [stellar_spectrum](https://github.com/bloom-solutions/stellar_spectrum-ruby) that allows sending of assets through multiple payment channels.
84
+
85
+ To configure this:
86
+
87
+ ```ruby
88
+ config = {redis_url: "redis://redis", seeds: %w(S1 S2)}
89
+ c.sending_strategy = [:stellar_spectrum, config]
90
+ ```
91
+
92
+ In the code above, `config` is the [configuration in StellarSpectrum](https://github.com/bloom-solutions/stellar_spectrum-ruby#usage), **except** the `horizon_url`. The value for `horizon_url` will be taken from `c.horizon_url`.
93
+
79
94
  ## Installation
80
95
  Add this line to your application's Gemfile:
81
96
 
@@ -9,7 +9,7 @@ module StellarBase
9
9
  :issuer_account,
10
10
  :recipient_account,
11
11
  :stellar_amount,
12
- :stellar_sdk_client,
12
+ :asset_sending_client,
13
13
  )
14
14
  promises :stellar_tx_id
15
15
 
@@ -25,7 +25,7 @@ module StellarBase
25
25
  Rails.logger.info(msg)
26
26
 
27
27
  begin
28
- response = c.stellar_sdk_client.send_payment(
28
+ response = c.asset_sending_client.send_payment(
29
29
  from: c.distribution_account,
30
30
  to: c.recipient_account,
31
31
  amount: c.stellar_amount,
@@ -4,12 +4,21 @@ module StellarBase
4
4
 
5
5
  extend LightService::Organizer
6
6
 
7
- def self.call(network, deposit_address, tx_id, amount)
7
+ def self.call(
8
+ network,
9
+ deposit_address,
10
+ tx_id,
11
+ amount,
12
+ horizon_url: StellarBase.configuration.horizon_url,
13
+ sending_strategy: StellarBase.configuration.sending_strategy
14
+ )
8
15
  with(
9
16
  network: network,
10
17
  deposit_address: deposit_address,
11
18
  tx_id: tx_id,
12
19
  amount: amount,
20
+ horizon_url: horizon_url,
21
+ sending_strategy: sending_strategy,
13
22
  ).reduce(actions)
14
23
  end
15
24
 
@@ -18,7 +27,7 @@ module StellarBase
18
27
  FindConfig,
19
28
  FindDepositRequest,
20
29
  FindOrCreateDeposit,
21
- InitStellarClient,
30
+ InitAssetSendingClient,
22
31
  InitStellarIssuerAccount,
23
32
  InitStellarRecipientAccount,
24
33
  InitStellarDistributionAccount,
@@ -0,0 +1,21 @@
1
+ module StellarBase
2
+ class InitAssetSendingClient
3
+
4
+ extend LightService::Action
5
+ expects :sending_strategy, :horizon_url
6
+ promises :asset_sending_client
7
+
8
+ executed do |c|
9
+ sending_strategy = Array(c.sending_strategy)
10
+ if sending_strategy.first == :stellar_sdk
11
+ client = Stellar::Client.new(horizon: c.horizon_url)
12
+ elsif sending_strategy.first == :stellar_spectrum
13
+ config = sending_strategy.last.merge(horizon_url: c.horizon_url)
14
+ client = StellarSpectrum.new(config)
15
+ end
16
+
17
+ c.asset_sending_client = client
18
+ end
19
+
20
+ end
21
+ end
data/lib/stellar_base.rb CHANGED
@@ -34,6 +34,7 @@ module StellarBase
34
34
  has :stellar_toml, classes: Hash, default: {}
35
35
  has :depositable_assets, classes: [NilClass, Array, String, Pathname]
36
36
  has :withdrawable_assets, classes: [NilClass, Array, String, Pathname]
37
+ has :sending_strategy, classes: [Array, Symbol], default: [:stellar_sdk]
37
38
  end
38
39
 
39
40
  after_configuration_change do
@@ -1,3 +1,3 @@
1
1
  module StellarBase
2
- VERSION = "0.10.0".freeze
2
+ VERSION = "1.0.0".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stellar_base-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ace Subido
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-23 00:00:00.000000000 Z
11
+ date: 2018-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: disposable
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - ">="
172
172
  - !ruby/object:Gem::Version
173
- version: 0.14.0
173
+ version: 0.18.0
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
- version: 0.14.0
180
+ version: 0.18.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: toml-rb
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -220,6 +220,20 @@ dependencies:
220
220
  - - ">="
221
221
  - !ruby/object:Gem::Version
222
222
  version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: reform-rails
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
223
237
  - !ruby/object:Gem::Dependency
224
238
  name: virtus
225
239
  requirement: !ruby/object:Gem::Requirement
@@ -268,14 +282,14 @@ dependencies:
268
282
  requirements:
269
283
  - - ">="
270
284
  - !ruby/object:Gem::Version
271
- version: '0'
285
+ version: 0.6.0
272
286
  type: :development
273
287
  prerelease: false
274
288
  version_requirements: !ruby/object:Gem::Requirement
275
289
  requirements:
276
290
  - - ">="
277
291
  - !ruby/object:Gem::Version
278
- version: '0'
292
+ version: 0.6.0
279
293
  - !ruby/object:Gem::Dependency
280
294
  name: factory_bot_rails
281
295
  requirement: !ruby/object:Gem::Requirement
@@ -332,6 +346,20 @@ dependencies:
332
346
  - - ">="
333
347
  - !ruby/object:Gem::Version
334
348
  version: '0'
349
+ - !ruby/object:Gem::Dependency
350
+ name: stellar_spectrum
351
+ requirement: !ruby/object:Gem::Requirement
352
+ requirements:
353
+ - - "~>"
354
+ - !ruby/object:Gem::Version
355
+ version: '1.0'
356
+ type: :development
357
+ prerelease: false
358
+ version_requirements: !ruby/object:Gem::Requirement
359
+ requirements:
360
+ - - "~>"
361
+ - !ruby/object:Gem::Version
362
+ version: '1.0'
335
363
  description: API Endpoints for the Stellar Protocol
336
364
  email:
337
365
  - ace.subido@gmail.com
@@ -415,6 +443,7 @@ files:
415
443
  - app/services/stellar_base/deposit_requests/update_deposit.rb
416
444
  - app/services/stellar_base/gen_memo_for.rb
417
445
  - app/services/stellar_base/gen_random_string.rb
446
+ - app/services/stellar_base/init_asset_sending_client.rb
418
447
  - app/services/stellar_base/init_stellar_client.rb
419
448
  - app/services/stellar_base/subscribe_account.rb
420
449
  - app/services/stellar_base/withdrawal_requests/call_on_withdraw.rb
@@ -469,7 +498,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
469
498
  version: '0'
470
499
  requirements: []
471
500
  rubyforge_project:
472
- rubygems_version: 2.7.6
501
+ rubygems_version: 2.7.3
473
502
  signing_key:
474
503
  specification_version: 4
475
504
  summary: Mountable Stellar API Endpoints for Rails