shopify-gold 2.1.7.pre → 2.1.8

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: f6c8ace5d4d8ead0014d2c86ead25ad9bde3cb2685e41260a578675ab679165f
4
- data.tar.gz: 05be6423251f44f471acf1f3dce5169092f9dfc77cd4b891bc9816edcae21d0b
3
+ metadata.gz: 99f0de847ec187bfbbd0dc8d7bde7a2b23320851b61d637f3bd028c16f6f16e6
4
+ data.tar.gz: dc0efcde47cdf3355c17d47e700c3e36e6b94dd581ad26aa1dea3bbc30efdf3d
5
5
  SHA512:
6
- metadata.gz: 4c19091ad6be5d1c454b2cafa6e84b91f3576d5b21355753d05b6d90bd4260b2b51d6b221c68cae5bcd52b075112b160d720325c3bb2eadd58b600007fa555b4
7
- data.tar.gz: b18102a095dcd2500cb45d369a701ac4627b5a5c74707998bbb39578751bbc7cb895c13d718c03a6b6ac65c73691cc58fe748aa93ce098299bcd1b2b0b2d1dc8
6
+ metadata.gz: d6a1c4ec0719da7869e3612e8c017082a0c320cca04788f48457e436d2128d50d9f494207c1ecd3fb5f61501e10186f427099d5642dc8f6766e2f30031c92053
7
+ data.tar.gz: 230f2b0972feaf7a0a748fbd4baf76c50d3dbd80a3c4c8bf1f2523556c54c20b3a91444d488258cc9b0dff0cd36ba99fb5d659e18ce89118e9791c32be9e3026
data/README.md CHANGED
@@ -147,6 +147,10 @@ Gold.configure do |config|
147
147
  puts "Applied tier..."
148
148
  }
149
149
 
150
+ config.on_activate_charge = proc { |billing, charge|
151
+ puts "Activated charge..."
152
+ }
153
+
150
154
  config.on_uninstall = proc {
151
155
  puts "Uninstalling Gold..."
152
156
  }
@@ -154,6 +158,10 @@ Gold.configure do |config|
154
158
  config.on_cleanup = proc { |billing|
155
159
  puts "Cleaning up shop"
156
160
  }
161
+
162
+ config.on_check_charge = proc { |billing, active_charge|
163
+ puts "Check charge for shop"
164
+ }
157
165
  end
158
166
  ```
159
167
 
@@ -112,6 +112,7 @@ module Gold
112
112
  request_with_retries do
113
113
  charge.activate
114
114
  @billing.transition_to!(activated_state)
115
+ Gold.configuration.on_activate_charge&.call(@billing, charge)
115
116
  return ActiveCharge.new(charge.id)
116
117
  end
117
118
  end
@@ -23,18 +23,21 @@ module Gold
23
23
  active_charge = charges.find { |charge| charge.status == "active" }
24
24
  frozen_charge = charges.find { |charge| charge.status == "frozen" }
25
25
 
26
- if active_charge && billing_matches_charge?(active_charge)
27
- @billing.transition_to!(:billing)
28
- return ActiveCharge.new(active_charge.id)
29
- elsif frozen_charge && @billing.transition_to(:frozen)
30
- return FrozenCharge.new
31
- elsif active_charge
32
- @billing.transition_to!(:charge_missing)
33
- return MismatchCharge.new
34
- else
35
- @billing.transition_to!(:charge_missing)
36
- return MissingCharge.new
37
- end
26
+ outcome = if active_charge && billing_matches_charge?(active_charge)
27
+ @billing.transition_to!(:billing)
28
+ ActiveCharge.new(active_charge.id)
29
+ elsif frozen_charge && @billing.transition_to(:frozen)
30
+ FrozenCharge.new
31
+ elsif active_charge
32
+ @billing.transition_to!(:charge_missing)
33
+ MismatchCharge.new
34
+ else
35
+ @billing.transition_to!(:charge_missing)
36
+ MissingCharge.new
37
+ end
38
+
39
+ Gold.configuration.on_check_charge&.call(@billing, active_charge)
40
+ outcome
38
41
  end
39
42
 
40
43
  private
@@ -1,5 +1,6 @@
1
- require "gold/engine"
2
1
  require "gold/billing_migrator"
2
+ require "gold/configuration"
3
+ require "gold/engine"
3
4
  require "gold/outcomes"
4
5
  require "statesman"
5
6
 
@@ -23,81 +24,4 @@ module Gold
23
24
  self.configuration ||= Configuration.new
24
25
  yield(configuration)
25
26
  end
26
-
27
- # Config for Gold
28
- class Configuration
29
- attr_accessor :test_charge,
30
- :app_name,
31
- :contact_email,
32
- :plan_comparison_url,
33
- :logger,
34
- :admin_credentials,
35
- :shopify_api_version,
36
- :allow_automated_charge_cancellation,
37
- :days_until_delinquent,
38
- :days_until_cleanup,
39
- :shop_domain_attribute
40
-
41
- # Callbacks
42
- attr_accessor :on_terms,
43
- :on_install,
44
- :on_uninstall,
45
- :on_cleanup,
46
- :on_apply_tier
47
-
48
- attr_writer :shop_class
49
-
50
- def initialize
51
- # The class name (string) of the the app's Active Record Shop model
52
- @shop_class = nil
53
-
54
- # The attribute of the *.myshopify.com domain on the Shop model
55
- @shop_domain_attribute = nil
56
-
57
- # Should Gold create test charges? Helpful in a development environment
58
- @test_charge = false
59
-
60
- # The logger Gold will use
61
- @logger = Logger.new(STDOUT)
62
-
63
- # How many days we'll wait before cleaning up an uninstalled shop
64
- @days_until_cleanup = 30
65
-
66
- # How many days we'll wait before we uninstall a shop without payment
67
- @days_until_delinquent = 7
68
-
69
- # The name of the app using gold (used in the charge name)
70
- @app_name = "My App"
71
-
72
- # The email Gold uses to send emails from
73
- @contact_email = nil
74
-
75
- # The URL to a plan comparison page for the app
76
- @plan_comparison_url = nil
77
-
78
- # Login credential's to Gold's backend
79
- @admin_credentials = {
80
- user: "admin",
81
- password: "password123"
82
- }
83
-
84
- # The API version used by Shopify (https://help.shopify.com/en/api/versioning)
85
- @shopify_api_version = "2019-04"
86
-
87
- # If Gold is allowed to cancel charges (paid -> free) automatically
88
- @allow_automated_charge_cancellation = true
89
- end
90
-
91
- def shop_class
92
- @shop_constant ||= @shop_class.to_s.constantize
93
- rescue NameError
94
- raise "'#{@shop_class}' is not a valid class name for shop class. " \
95
- "You must specify one in your Gold config file with " \
96
- "'config.shop'"
97
- end
98
-
99
- def test_charge?
100
- @test_charge
101
- end
102
- end
103
27
  end
@@ -56,7 +56,9 @@ module Gold
56
56
  rescue ActiveResource::UnauthorizedAccess,
57
57
  ActiveResource::ForbiddenAccess,
58
58
  ActiveResource::ResourceNotFound
59
- Gold.logger.info("Shop '#{@shop.shopify_domain}' is uninstalled, skipping...")
59
+ Gold.logger.info("Shop '#{@shop.shopify_domain}' is uninstalled")
60
+ UninstallOp.new(@billing).call
61
+ true
60
62
  end
61
63
 
62
64
  private
@@ -0,0 +1,80 @@
1
+ module Gold
2
+ # Config for Gold
3
+ class Configuration
4
+ attr_accessor :test_charge,
5
+ :app_name,
6
+ :contact_email,
7
+ :plan_comparison_url,
8
+ :logger,
9
+ :admin_credentials,
10
+ :shopify_api_version,
11
+ :allow_automated_charge_cancellation,
12
+ :days_until_delinquent,
13
+ :days_until_cleanup,
14
+ :shop_domain_attribute
15
+
16
+ # Callbacks
17
+ attr_accessor :on_terms,
18
+ :on_install,
19
+ :on_activate_charge,
20
+ :on_apply_tier,
21
+ :on_uninstall,
22
+ :on_cleanup,
23
+ :on_check_charge
24
+
25
+ attr_writer :shop_class
26
+
27
+ def initialize
28
+ # The class name (string) of the the app's Active Record Shop model
29
+ @shop_class = nil
30
+
31
+ # The attribute of the *.myshopify.com domain on the Shop model
32
+ @shop_domain_attribute = nil
33
+
34
+ # Should Gold create test charges? Helpful in a development environment
35
+ @test_charge = false
36
+
37
+ # The logger Gold will use
38
+ @logger = Logger.new(STDOUT)
39
+
40
+ # How many days we'll wait before cleaning up an uninstalled shop
41
+ @days_until_cleanup = 30
42
+
43
+ # How many days we'll wait before we uninstall a shop without payment
44
+ @days_until_delinquent = 7
45
+
46
+ # The name of the app using gold (used in the charge name)
47
+ @app_name = "My App"
48
+
49
+ # The email Gold uses to send emails from
50
+ @contact_email = nil
51
+
52
+ # The URL to a plan comparison page for the app
53
+ @plan_comparison_url = nil
54
+
55
+ # Login credential's to Gold's backend
56
+ @admin_credentials = {
57
+ user: "admin",
58
+ password: "password123"
59
+ }
60
+
61
+ # The API version used by Shopify (https://help.shopify.com/en/api/versioning)
62
+ @shopify_api_version = "2019-04"
63
+
64
+ # If Gold is allowed to cancel charges (paid -> free) automatically
65
+ @allow_automated_charge_cancellation = true
66
+ end
67
+
68
+ def shop_class
69
+ @shop_constant ||= @shop_class.to_s.constantize
70
+ rescue NameError
71
+ raise "'#{@shop_class}' is not a valid class name for shop class. " \
72
+ "You must specify one in your Gold config file with " \
73
+ "'config.shop'"
74
+ end
75
+
76
+ def test_charge?
77
+ @test_charge
78
+ end
79
+ end
80
+ end
@@ -1,3 +1,3 @@
1
1
  module Gold
2
- VERSION = "2.1.7.pre".freeze
2
+ VERSION = "2.1.8".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shopify-gold
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.7.pre
4
+ version: 2.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Smith
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-08-16 00:00:00.000000000 Z
12
+ date: 2019-08-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -279,6 +279,7 @@ files:
279
279
  - lib/gold.rb
280
280
  - lib/gold/admin_engine.rb
281
281
  - lib/gold/billing_migrator.rb
282
+ - lib/gold/configuration.rb
282
283
  - lib/gold/coverage.rb
283
284
  - lib/gold/diagram.rb
284
285
  - lib/gold/engine.rb
@@ -302,9 +303,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
302
303
  version: '2.5'
303
304
  required_rubygems_version: !ruby/object:Gem::Requirement
304
305
  requirements:
305
- - - ">"
306
+ - - ">="
306
307
  - !ruby/object:Gem::Version
307
- version: 1.3.1
308
+ version: '0'
308
309
  requirements: []
309
310
  rubygems_version: 3.0.1
310
311
  signing_key: