stellar_base-rails 0.10.0 → 1.0.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: 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