stellar_base-rails 0.5.4 → 0.5.5

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: 417896ba7988ec6ba5a584c65eb0868fc2f1b3a13db4dc10cd836d61b349ed85
4
- data.tar.gz: 5e0821667ef3c212485ffa19d9e81f4fb3ff4cafd6f8009bbee7a0e9aa8558bb
3
+ metadata.gz: 1b032a3ab1820d7411b5151c7b61350fca291a36c38cf64d84fa9ce11065d2df
4
+ data.tar.gz: 22c699cd39b19dfb2e96e5b1ea000aa5362cc45bd8393300770a0d2a052f9b2b
5
5
  SHA512:
6
- metadata.gz: b4032435b981acf1440eea54554fd22a553c4453f5d7e70fe49437437b2ded22275f1e5cc6010dca9f518c9437eefbde3d25b354fc70b19902ee1e4e8b5addc6
7
- data.tar.gz: b2836acfe40a614015241f658597592aecfb466b165e6c6e07ef4567672b09241dec5c776a436c7ee3c874e6f081ad267dc400b3af6ddcd6fe9a0e2004039b18
6
+ metadata.gz: 7702503356c3cf28d2c03f35367d0793d13bde5cc3d45dd87b681840ce1fff444632eccb6a78497ec246b8e767d2fe5a02e900985194aff87346d300ee2fec2a
7
+ data.tar.gz: ad913b47be20ff81a91b577f55213444e01aa1aa4f0c29a1ee1fd9ae552ff84f85ce729882e68be4cf9ed0c83ed2af748a7eb6051c373ebcced6eec4935161ac
data/README.md CHANGED
@@ -56,17 +56,17 @@ This is the same distribution account that is setup in bridge. Currently, it is
56
56
  - Value(s): Hash, follow Stellar's [documentation](https://www.stellar.org/developers/guides/concepts/stellar-toml.html) for `stellar.toml`
57
57
  - Example:
58
58
  ```
59
- c.stellar_toml = {
60
- TRANSFER_SERVER: ...,
61
- FEDERATION_SERVER: ...,
62
- AUTH_SERVER: ...,
63
- }
59
+ c.stellar_toml = { TRANSFER_SERVER: ... }
64
60
  ```
65
- - Default:
61
+ - When adding the URL of the transfer server, make sure not to add `/` at the end as described in the Stellar documentation:
66
62
  ```
67
- c.stellar_toml = {
68
- TRANSFER_SERVER: ...,
69
- }
63
+ # Correct:
64
+ https://example.com/stellar
65
+ https://example.com
66
+
67
+ # Bad:
68
+ https://example.com/stellar/
69
+ https://example.com/
70
70
  ```
71
71
 
72
72
  ## Installation
@@ -7,30 +7,32 @@ module StellarBase
7
7
  property :asset_code
8
8
  property :dest
9
9
  property :dest_extra
10
- property :issuer
11
- property :account_id
12
- property :memo_type
13
- property :memo
14
- property :eta
15
- property :min_amount
16
- property :max_amount
17
- property :fee_fixed
18
- property :fee_percent
19
10
  property :fee_network
20
11
 
21
12
  validates(
22
- *%i[
23
- asset_type
24
- asset_code
25
- dest
26
- issuer
27
- account_id
28
- fee_network
29
- fee_fixed
30
- fee_percent
31
- ],
32
- presence: true
13
+ :asset_type,
14
+ :asset_code,
15
+ :dest,
16
+ :fee_network,
17
+ presence: true,
33
18
  )
19
+ validate :check_valid_asset_code
20
+
21
+ def check_valid_asset_code
22
+ asset_codes = StellarBase
23
+ .configuration
24
+ .withdrawable_assets
25
+ &.map do |asset|
26
+ asset[:asset_code]
27
+ end
28
+
29
+ return if asset_codes.include? asset_code
30
+
31
+ errors.add(
32
+ :asset_code,
33
+ "invalid asset_code. Valid asset_codes: #{asset_codes.join(', ')}",
34
+ )
35
+ end
34
36
 
35
37
  end
36
38
  end
@@ -7,44 +7,52 @@ module StellarBase
7
7
 
8
8
  step self::Policy::Pundit(WithdrawalRequestPolicy, :create?)
9
9
  step Model(WithdrawalRequest, :new)
10
- step :find_withdrawal_asset_details!
11
- success :set_defaults!
10
+ step :setup_params!
12
11
  step Contract::Build(constant: Contracts::Create)
13
12
  step Contract::Validate(key: :withdrawal_request)
14
- step Contract::Persist()
13
+ step Contract::Persist(method: :sync)
14
+ step :find_withdrawal_asset_details!
15
+ success :set_defaults!
16
+ step Contract::Persist(method: :save)
15
17
 
16
18
  private
17
19
 
20
+ def setup_params!(options, params:, **)
21
+ params[:withdrawal_request].merge!({
22
+ asset_type: params[:withdrawal_request][:type],
23
+ })
24
+ end
25
+
18
26
  def find_withdrawal_asset_details!(options, params:, **)
19
27
  withdrawable_assets = StellarBase.configuration.withdrawable_assets
20
28
  details = withdrawable_assets.find do |e|
21
29
  e[:asset_code] == params[:withdrawal_request][:asset_code]
22
30
  end
23
31
 
24
- return Railway.fail_fast! if details.nil?
25
-
26
- options["withdrawal_asset_details"] = details
27
- return true
32
+ params[:withdrawal_asset_details] = details.presence || {}
28
33
  end
29
34
 
30
- def set_defaults!(options, withdrawal_asset_details:, params:, **)
35
+ def set_defaults!(options, params:, **)
36
+ withdrawal_asset_details = params[:withdrawal_asset_details]
37
+
31
38
  fee_network = DetermineFee.network(
32
39
  withdrawal_asset_details[:network],
33
40
  params[:withdrawal_request][:fee_network],
34
41
  )
35
- params[:withdrawal_request].merge!({
36
- asset_type: params[:withdrawal_request][:type],
37
- issuer: withdrawal_asset_details[:issuer],
38
- account_id: StellarBase.configuration.distribution_account,
39
- memo_type: "text",
40
- memo: GenMemo.(),
41
- eta: DEFAULT_ETA,
42
- min_amount: 0.0,
43
- max_amount: nil,
44
- fee_fixed: DetermineFee.(withdrawal_asset_details[:fee_fixed]),
45
- fee_percent: DetermineFee.(withdrawal_asset_details[:fee_percent]),
46
- fee_network: fee_network,
47
- })
42
+
43
+ options["model"].issuer = withdrawal_asset_details[:issuer]
44
+ options["model"].account_id =
45
+ StellarBase.configuration.distribution_account
46
+ options["model"].memo_type = "text"
47
+ options["model"].memo = GenMemo.()
48
+ options["model"].eta = DEFAULT_ETA
49
+ options["model"].min_amount = 0.0
50
+ options["model"].max_amount = nil
51
+ options["model"].fee_fixed =
52
+ DetermineFee.(withdrawal_asset_details[:fee_fixed])
53
+ options["model"].fee_percent =
54
+ DetermineFee.(withdrawal_asset_details[:fee_percent])
55
+ options["model"].fee_network = fee_network
48
56
  end
49
57
 
50
58
  end
@@ -11,7 +11,10 @@ module StellarBase
11
11
  representer = WithdrawalRequestRepresenter.new(twin)
12
12
  render json: representer
13
13
  else
14
- render json: {error: op["contract.default"].errors}, status: :unprocessable_entity
14
+ render(
15
+ json: { error: op["contract.default"].errors },
16
+ status: :unprocessable_entity,
17
+ )
15
18
  end
16
19
  end
17
20
  end
@@ -1,3 +1,3 @@
1
1
  module StellarBase
2
- VERSION = "0.5.4".freeze
2
+ VERSION = "0.5.5".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.5.4
4
+ version: 0.5.5
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-09-02 00:00:00.000000000 Z
11
+ date: 2018-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: disposable
@@ -366,7 +366,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
366
366
  version: '0'
367
367
  requirements: []
368
368
  rubyforge_project:
369
- rubygems_version: 2.7.7
369
+ rubygems_version: 2.7.6
370
370
  signing_key:
371
371
  specification_version: 4
372
372
  summary: Mountable Stellar API Endpoints for Rails