app_manager 1.6.1 → 1.6.2

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: 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