app_manager 1.6.1 → 1.6.2

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: bf415f568160cb4d0f964d01a39022df2906cd0cce3f5511f1a3f2fc19fe1155
4
- data.tar.gz: fe3d01cf07acc3346a00f43723a016d86884a1fc01820b882de0462a6d92ecec
3
+ metadata.gz: ea6c61b1ae005d14902a296e6c1a43e28679313985905b295fb24f4f361434cd
4
+ data.tar.gz: f586f0d88bbb8ccda1fcd4a1c67aea648755909219c8c26671b744eb4c132ee2
5
5
  SHA512:
6
- metadata.gz: 1d2884af860d6872fa7e434574743219b8f8ca6cba0fa186c7ce05f5383c68cb4323ceff6d5c0bf984fbdc6231939a81005fdad0f500efeb56c8888ecfc86e67
7
- data.tar.gz: 00ade8b2e4e6a9160a8c8e445d8693b39b79ffe649dedde189fa83856e9876d06d8bdfa7963a87010da4f268c0ccfdbf34fc096f665929db79db2ecb38e80d14
6
+ metadata.gz: 27fd9ec25e4c6e1aa49b06dd2668abdc8f3f51efe6becf6fee47bbecc187e9c5bc51485a0ff40a46d4427d08b675738c7af35fc6815958577e33d30fb295de63
7
+ data.tar.gz: 1f817a3e9193b58e3b792ab36ea567174058f0e39e265c75f6cac5b463a26387007aa6226807b9bd9626171e90ab396b1cbf496c466fae66106ec73eeca2b743
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- app_manager (1.6.1)
4
+ app_manager (1.6.2)
5
5
  activerecord-import (~> 1.4)
6
6
  httparty
7
7
  kaminari (>= 0.16.3)
@@ -10,69 +10,69 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- actioncable (7.0.4.3)
14
- actionpack (= 7.0.4.3)
15
- activesupport (= 7.0.4.3)
13
+ actioncable (7.0.5)
14
+ actionpack (= 7.0.5)
15
+ activesupport (= 7.0.5)
16
16
  nio4r (~> 2.0)
17
17
  websocket-driver (>= 0.6.1)
18
- actionmailbox (7.0.4.3)
19
- actionpack (= 7.0.4.3)
20
- activejob (= 7.0.4.3)
21
- activerecord (= 7.0.4.3)
22
- activestorage (= 7.0.4.3)
23
- activesupport (= 7.0.4.3)
18
+ actionmailbox (7.0.5)
19
+ actionpack (= 7.0.5)
20
+ activejob (= 7.0.5)
21
+ activerecord (= 7.0.5)
22
+ activestorage (= 7.0.5)
23
+ activesupport (= 7.0.5)
24
24
  mail (>= 2.7.1)
25
25
  net-imap
26
26
  net-pop
27
27
  net-smtp
28
- actionmailer (7.0.4.3)
29
- actionpack (= 7.0.4.3)
30
- actionview (= 7.0.4.3)
31
- activejob (= 7.0.4.3)
32
- activesupport (= 7.0.4.3)
28
+ actionmailer (7.0.5)
29
+ actionpack (= 7.0.5)
30
+ actionview (= 7.0.5)
31
+ activejob (= 7.0.5)
32
+ activesupport (= 7.0.5)
33
33
  mail (~> 2.5, >= 2.5.4)
34
34
  net-imap
35
35
  net-pop
36
36
  net-smtp
37
37
  rails-dom-testing (~> 2.0)
38
- actionpack (7.0.4.3)
39
- actionview (= 7.0.4.3)
40
- activesupport (= 7.0.4.3)
41
- rack (~> 2.0, >= 2.2.0)
38
+ actionpack (7.0.5)
39
+ actionview (= 7.0.5)
40
+ activesupport (= 7.0.5)
41
+ rack (~> 2.0, >= 2.2.4)
42
42
  rack-test (>= 0.6.3)
43
43
  rails-dom-testing (~> 2.0)
44
44
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
45
- actiontext (7.0.4.3)
46
- actionpack (= 7.0.4.3)
47
- activerecord (= 7.0.4.3)
48
- activestorage (= 7.0.4.3)
49
- activesupport (= 7.0.4.3)
45
+ actiontext (7.0.5)
46
+ actionpack (= 7.0.5)
47
+ activerecord (= 7.0.5)
48
+ activestorage (= 7.0.5)
49
+ activesupport (= 7.0.5)
50
50
  globalid (>= 0.6.0)
51
51
  nokogiri (>= 1.8.5)
52
- actionview (7.0.4.3)
53
- activesupport (= 7.0.4.3)
52
+ actionview (7.0.5)
53
+ activesupport (= 7.0.5)
54
54
  builder (~> 3.1)
55
55
  erubi (~> 1.4)
56
56
  rails-dom-testing (~> 2.0)
57
57
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
58
- activejob (7.0.4.3)
59
- activesupport (= 7.0.4.3)
58
+ activejob (7.0.5)
59
+ activesupport (= 7.0.5)
60
60
  globalid (>= 0.3.6)
61
- activemodel (7.0.4.3)
62
- activesupport (= 7.0.4.3)
63
- activerecord (7.0.4.3)
64
- activemodel (= 7.0.4.3)
65
- activesupport (= 7.0.4.3)
61
+ activemodel (7.0.5)
62
+ activesupport (= 7.0.5)
63
+ activerecord (7.0.5)
64
+ activemodel (= 7.0.5)
65
+ activesupport (= 7.0.5)
66
66
  activerecord-import (1.4.1)
67
67
  activerecord (>= 4.2)
68
- activestorage (7.0.4.3)
69
- actionpack (= 7.0.4.3)
70
- activejob (= 7.0.4.3)
71
- activerecord (= 7.0.4.3)
72
- activesupport (= 7.0.4.3)
68
+ activestorage (7.0.5)
69
+ actionpack (= 7.0.5)
70
+ activejob (= 7.0.5)
71
+ activerecord (= 7.0.5)
72
+ activesupport (= 7.0.5)
73
73
  marcel (~> 1.0)
74
74
  mini_mime (>= 1.1.0)
75
- activesupport (7.0.4.3)
75
+ activesupport (7.0.5)
76
76
  concurrent-ruby (~> 1.0, >= 1.0.2)
77
77
  i18n (>= 1.6, < 2)
78
78
  minitest (>= 5.1)
@@ -95,7 +95,7 @@ GEM
95
95
  httparty (0.21.0)
96
96
  mini_mime (>= 1.0.0)
97
97
  multi_xml (>= 0.5.2)
98
- i18n (1.12.0)
98
+ i18n (1.14.1)
99
99
  concurrent-ruby (~> 1.0)
100
100
  kaminari (1.2.2)
101
101
  activesupport (>= 4.1.0)
@@ -109,9 +109,9 @@ GEM
109
109
  activerecord
110
110
  kaminari-core (= 1.2.2)
111
111
  kaminari-core (1.2.2)
112
- loofah (2.19.1)
112
+ loofah (2.21.3)
113
113
  crass (~> 1.0.2)
114
- nokogiri (>= 1.5.9)
114
+ nokogiri (>= 1.12.0)
115
115
  mail (2.8.1)
116
116
  mini_mime (>= 0.1.1)
117
117
  net-imap
@@ -120,7 +120,7 @@ GEM
120
120
  marcel (1.0.2)
121
121
  method_source (1.0.0)
122
122
  mini_mime (1.1.2)
123
- mini_portile2 (2.8.1)
123
+ mini_portile2 (2.8.2)
124
124
  minitest (5.18.0)
125
125
  multi_xml (0.6.0)
126
126
  net-imap (0.3.4)
@@ -132,40 +132,41 @@ GEM
132
132
  timeout
133
133
  net-smtp (0.3.3)
134
134
  net-protocol
135
- nio4r (2.5.8)
136
- nokogiri (1.14.2)
137
- mini_portile2 (~> 2.8.0)
135
+ nio4r (2.5.9)
136
+ nokogiri (1.15.2)
137
+ mini_portile2 (~> 2.8.2)
138
138
  racc (~> 1.4)
139
139
  pry (0.14.1)
140
140
  coderay (~> 1.1)
141
141
  method_source (~> 1.0)
142
142
  public_suffix (4.0.6)
143
143
  racc (1.6.2)
144
- rack (2.2.6.4)
144
+ rack (2.2.7)
145
145
  rack-test (2.1.0)
146
146
  rack (>= 1.3)
147
- rails (7.0.4.3)
148
- actioncable (= 7.0.4.3)
149
- actionmailbox (= 7.0.4.3)
150
- actionmailer (= 7.0.4.3)
151
- actionpack (= 7.0.4.3)
152
- actiontext (= 7.0.4.3)
153
- actionview (= 7.0.4.3)
154
- activejob (= 7.0.4.3)
155
- activemodel (= 7.0.4.3)
156
- activerecord (= 7.0.4.3)
157
- activestorage (= 7.0.4.3)
158
- activesupport (= 7.0.4.3)
147
+ rails (7.0.5)
148
+ actioncable (= 7.0.5)
149
+ actionmailbox (= 7.0.5)
150
+ actionmailer (= 7.0.5)
151
+ actionpack (= 7.0.5)
152
+ actiontext (= 7.0.5)
153
+ actionview (= 7.0.5)
154
+ activejob (= 7.0.5)
155
+ activemodel (= 7.0.5)
156
+ activerecord (= 7.0.5)
157
+ activestorage (= 7.0.5)
158
+ activesupport (= 7.0.5)
159
159
  bundler (>= 1.15.0)
160
- railties (= 7.0.4.3)
160
+ railties (= 7.0.5)
161
161
  rails-dom-testing (2.0.3)
162
162
  activesupport (>= 4.2.0)
163
163
  nokogiri (>= 1.6)
164
- rails-html-sanitizer (1.5.0)
165
- loofah (~> 2.19, >= 2.19.1)
166
- railties (7.0.4.3)
167
- actionpack (= 7.0.4.3)
168
- activesupport (= 7.0.4.3)
164
+ rails-html-sanitizer (1.6.0)
165
+ loofah (~> 2.21)
166
+ nokogiri (~> 1.14)
167
+ railties (7.0.5)
168
+ actionpack (= 7.0.5)
169
+ activesupport (= 7.0.5)
169
170
  method_source
170
171
  rake (>= 12.2)
171
172
  thor (~> 1.0)
@@ -187,7 +188,7 @@ GEM
187
188
  diff-lcs (>= 1.2.0, < 2.0)
188
189
  rspec-support (~> 3.11.0)
189
190
  rspec-support (3.11.0)
190
- thor (1.2.1)
191
+ thor (1.2.2)
191
192
  timeout (0.3.2)
192
193
  tzinfo (2.0.6)
193
194
  concurrent-ruby (~> 1.0)
@@ -198,7 +199,7 @@ GEM
198
199
  websocket-driver (0.7.5)
199
200
  websocket-extensions (>= 0.1.0)
200
201
  websocket-extensions (0.1.5)
201
- zeitwerk (2.6.7)
202
+ zeitwerk (2.6.8)
202
203
 
203
204
  PLATFORMS
204
205
  ruby
data/README.md CHANGED
@@ -56,6 +56,7 @@ AppManager.configure do |config|
56
56
  config.shopify_domain_field = 'shopify_domain' #shopify domain field
57
57
  config.plan_id_or_name_field = 'plan_id'
58
58
  config.shopify_app_slug = '' #Add your app slug here
59
+ config.plan_page_route = '' #Add your app's plan page route here without first slash. Ex. "payment"
59
60
  config.field_names = {
60
61
  'name' => 'shopify_domain', # demo-rahul-tiwari.myshopify.com
61
62
  'shopify_email' => 'email', # rahul.t@hulkapps.com
@@ -205,6 +206,7 @@ and then you can use follwing methods with your shop objects.
205
206
 
206
207
  @shop.cancel_current_shopify_charge # It will cancel charge in shopify if there is any, if success then it will cancel charge in app manager as well using (@shop.cancel_charge ) and will make plan_id and grandfathered field to false. It will clear cache as well.
207
208
 
209
+ @shop.active_shopfiy_charge_full #It will give shopify recurring charge graphql object with discounted price details
208
210
  ```
209
211
 
210
212
 
@@ -86,6 +86,8 @@ module AppManager
86
86
  shopify_domain = @field_names['name']
87
87
  grandfathered_field = @field_names['grandfathered']
88
88
  if !@shop.nil?
89
+ old_plan_id = @shop[@plan_field]
90
+ old_plan_data = nil
89
91
  headers = {"X-Shopify-Access-Token" => @shop[shopify_token]}
90
92
  charges = HTTParty.get('https://' + @shop[shopify_domain] + '/admin/api/' + @api_version + '/recurring_application_charges/' + params[:charge_id] + '.json', :headers => headers)
91
93
 
@@ -102,14 +104,6 @@ module AppManager
102
104
  charge['interval'] = plan_data['interval']['value']
103
105
 
104
106
  ['api_client_id', 'return_url', 'decorated_return_url','id','id','currency'].each { |k| charge.delete k }
105
- # new_plan_obj = AppManager::Client.new
106
- # if !@plan_field.nil?
107
- # begin
108
- # new_plan_obj.cancel_charge(@shop[shopify_domain], @shop[@plan_field])
109
- # rescue Exception => e
110
- # Rollbar.error("APP MANAGER Error in Cancel charge >>>> #{e.inspect}")
111
- # end
112
- # end
113
107
 
114
108
  charge_ob = AppManager::Client.new(nil, json_req = true)
115
109
  response = charge_ob.store_charge(charge.to_json)
@@ -124,6 +118,7 @@ module AppManager
124
118
  end
125
119
 
126
120
  @shop.update(update_info)
121
+
127
122
  Thread.new do
128
123
  charge_data = plan_obj.get_charge(@shop[shopify_domain])
129
124
  begin
@@ -139,8 +134,18 @@ module AppManager
139
134
  end
140
135
  end
141
136
  embed_host = Base64.encode64(params[:shop] + "/admin")
142
- # redirect_to "/login?host=#{embed_host}&shop=#{shop}" and return
143
- if app_slug.present?
137
+
138
+ if !old_plan_id.nil?
139
+ plan_obj = AppManager::Client.new
140
+ old_plan_data = plan_obj.get_plan(old_plan_id, params[:shop])
141
+ end
142
+
143
+ current_plan_string = !plan_data.nil? ? "#{plan_data['name'].gsub(" ", "-")}-#{plan_data['interval']['label']}" : "" rescue ""
144
+ old_plan_string = !old_plan_data.nil? ? "#{old_plan_data['name'].gsub(" ", "-")}-#{old_plan_data['interval']['label']}" : "" rescue ""
145
+ plan_query_string = "new_plan=#{current_plan_string}&old_plan=#{old_plan_string}"
146
+ if app_slug.present? && plan_page_route_value.present?
147
+ redirect_to "https://#{params[:shop]}/admin/apps/#{app_slug}/#{plan_page_route_value}?#{plan_query_string}"
148
+ elsif app_slug.present? && !plan_page_route_value.present?
144
149
  redirect_to "https://#{params[:shop]}/admin/apps/#{app_slug}"
145
150
  else
146
151
  redirect_to "#{app_url}?host=#{embed_host}&shop=#{params[:shop]}", :status => 301 and return
@@ -201,6 +206,10 @@ module AppManager
201
206
  AppManager.configuration.shopify_app_slug
202
207
  end
203
208
 
209
+ def plan_page_route_value
210
+ AppManager.configuration.plan_page_route
211
+ end
212
+
204
213
  def config_trial_days
205
214
  @field_names = AppManager.configuration.field_names
206
215
  if !@field_names.nil? && @field_names.has_key?('total_trial_days') && !@field_names['total_trial_days'].nil? && !@field_names['total_trial_days'].blank?
@@ -14,6 +14,7 @@ module AppManager
14
14
  attr_accessor :field_names
15
15
  attr_accessor :refresh_by_request_params
16
16
  attr_accessor :shopify_app_slug
17
+ attr_accessor :plan_page_route
17
18
 
18
19
  def initialize
19
20
  @refresh_by_request_params = true
@@ -26,6 +27,7 @@ module AppManager
26
27
  @shopify_domain_field = 'shopify_domain'
27
28
  @plan_id_or_name_field = nil
28
29
  @shopify_app_slug = nil
30
+ @plan_page_route = nil
29
31
  @field_names = {
30
32
  'name' => 'shopify_domain', # sample example: demo-chirag-parmar.myshopify.com
31
33
  'shopify_email' => 'email', # chirag.p@hulkapps.com
@@ -88,5 +90,9 @@ module AppManager
88
90
  @shopify_app_slug
89
91
  end
90
92
 
93
+ def plan_page_route
94
+ @plan_page_route
95
+ end
96
+
91
97
  end
92
98
  end
@@ -192,6 +192,56 @@ module AppManager
192
192
  return data
193
193
  end
194
194
 
195
+ def current_rc_charge_gql(shopify_charge_id)
196
+ query = 'query {
197
+ node(id: "gid://shopify/AppSubscription/'+shopify_charge_id+'") {
198
+ ...on AppSubscription {
199
+ createdAt
200
+ currentPeriodEnd
201
+ id
202
+ name
203
+ status
204
+ test
205
+ lineItems {
206
+ plan {
207
+ pricingDetails {
208
+ ...on AppRecurringPricing {
209
+ interval
210
+ price {
211
+ amount
212
+ currencyCode
213
+ }
214
+ discount {
215
+ priceAfterDiscount {
216
+ amount
217
+ }
218
+ }
219
+ }
220
+ ...on AppUsagePricing {
221
+ terms
222
+ cappedAmount {
223
+ amount
224
+ currencyCode
225
+
226
+ }
227
+ balanceUsed {
228
+ amount
229
+ currencyCode
230
+ }
231
+ }
232
+ }
233
+ }
234
+ }
235
+ }
236
+ }
237
+ }'
238
+
239
+
240
+ data = run_graph_api(query,'')
241
+ return data
242
+
243
+ end
244
+
195
245
  end
196
246
  end
197
247
 
@@ -313,6 +313,17 @@ module AppManager
313
313
  # end
314
314
  end
315
315
 
316
+ def active_shopfiy_charge_full
317
+ active_charge_id = self.active_shopify_charge_id
318
+ if active_charge_id.present?
319
+ gq_obj = AppManager::GraphqlHelper.new(self.shopify_domain, self.shopify_token)
320
+ rac_data = gq_obj.current_rc_charge_gql(active_charge_id)
321
+ return rac_data
322
+ else
323
+ return nil
324
+ end
325
+ end
326
+
316
327
  def config_trial_days
317
328
  @field_names = AppManager.configuration.field_names
318
329
  if !@field_names.nil? && @field_names.has_key?('total_trial_days') && !@field_names['total_trial_days'].nil? && !@field_names['total_trial_days'].blank?
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AppManager
4
- VERSION = "1.6.1"
4
+ VERSION = "1.6.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: app_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.1
4
+ version: 1.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rahul Tiwari @ Hulkapps
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-23 00:00:00.000000000 Z
11
+ date: 2023-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty