app_manager 1.4.3 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +22 -22
- data/app/controllers/app_manager/charges_controller.rb +2 -1
- data/lib/app_manager/fail_safe.rb +17 -13
- data/lib/app_manager/graphql_helper.rb +24 -6
- data/lib/app_manager/version.rb +1 -1
- data/lib/generators/app_manager/install/install_generator.rb +8 -0
- data/lib/generators/app_manager/install/templates/add_external_charge_field.erb +15 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '08247cd6b523b162de81de3d88cef576612ff41a2b2438b1182613c78e8d8afd'
|
4
|
+
data.tar.gz: 427cdb3d5feb431764fc99b85d64d208762f5994db53791e82a74cc3c1e248f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d09675e9f069c260e67a0e40c14c786e07e662e4e9901dc8c0a3eb8f21709e3213ae5bf9943e71c3484b59a3dc69448bec6b390960f36da237f85aac31f9dc1f
|
7
|
+
data.tar.gz: '09e251efca96dbea992ab7e5b29eb2fff5c6f353b305699935f5445ee6301784324fa2dbec57777c1212dd0d6b813e639a3ec5bfd11bacbbea99849c56c26173'
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
app_manager (1.
|
4
|
+
app_manager (1.5.0)
|
5
5
|
activerecord-import (~> 1.4)
|
6
6
|
httparty
|
7
7
|
kaminari (>= 0.16.3)
|
@@ -85,14 +85,15 @@ GEM
|
|
85
85
|
crack (0.4.5)
|
86
86
|
rexml
|
87
87
|
crass (1.0.6)
|
88
|
+
date (3.3.3)
|
88
89
|
diff-lcs (1.5.0)
|
89
90
|
dotenv (2.1.2)
|
90
|
-
erubi (1.
|
91
|
+
erubi (1.12.0)
|
91
92
|
globalid (1.0.0)
|
92
93
|
activesupport (>= 5.0)
|
93
94
|
hashdiff (1.0.1)
|
94
|
-
httparty (0.
|
95
|
-
|
95
|
+
httparty (0.21.0)
|
96
|
+
mini_mime (>= 1.0.0)
|
96
97
|
multi_xml (>= 0.5.2)
|
97
98
|
i18n (1.12.0)
|
98
99
|
concurrent-ruby (~> 1.0)
|
@@ -108,38 +109,37 @@ GEM
|
|
108
109
|
activerecord
|
109
110
|
kaminari-core (= 1.2.2)
|
110
111
|
kaminari-core (1.2.2)
|
111
|
-
loofah (2.19.
|
112
|
+
loofah (2.19.1)
|
112
113
|
crass (~> 1.0.2)
|
113
114
|
nokogiri (>= 1.5.9)
|
114
|
-
mail (2.
|
115
|
+
mail (2.8.0)
|
115
116
|
mini_mime (>= 0.1.1)
|
117
|
+
net-imap
|
118
|
+
net-pop
|
119
|
+
net-smtp
|
116
120
|
marcel (1.0.2)
|
117
121
|
method_source (1.0.0)
|
118
|
-
mime-types (3.4.1)
|
119
|
-
mime-types-data (~> 3.2015)
|
120
|
-
mime-types-data (3.2022.0105)
|
121
122
|
mini_mime (1.1.2)
|
122
|
-
|
123
|
-
minitest (5.16.3)
|
123
|
+
minitest (5.17.0)
|
124
124
|
multi_xml (0.6.0)
|
125
|
-
net-imap (0.3.
|
125
|
+
net-imap (0.3.4)
|
126
|
+
date
|
126
127
|
net-protocol
|
127
128
|
net-pop (0.1.2)
|
128
129
|
net-protocol
|
129
|
-
net-protocol (0.1
|
130
|
+
net-protocol (0.2.1)
|
130
131
|
timeout
|
131
|
-
net-smtp (0.3.
|
132
|
+
net-smtp (0.3.3)
|
132
133
|
net-protocol
|
133
134
|
nio4r (2.5.8)
|
134
|
-
nokogiri (1.13.
|
135
|
-
mini_portile2 (~> 2.8.0)
|
135
|
+
nokogiri (1.13.10-x86_64-linux)
|
136
136
|
racc (~> 1.4)
|
137
137
|
pry (0.14.1)
|
138
138
|
coderay (~> 1.1)
|
139
139
|
method_source (~> 1.0)
|
140
140
|
public_suffix (4.0.6)
|
141
|
-
racc (1.6.
|
142
|
-
rack (2.2.
|
141
|
+
racc (1.6.2)
|
142
|
+
rack (2.2.5)
|
143
143
|
rack-test (2.0.2)
|
144
144
|
rack (>= 1.3)
|
145
145
|
rails (7.0.4)
|
@@ -159,8 +159,8 @@ GEM
|
|
159
159
|
rails-dom-testing (2.0.3)
|
160
160
|
activesupport (>= 4.2.0)
|
161
161
|
nokogiri (>= 1.6)
|
162
|
-
rails-html-sanitizer (1.4.
|
163
|
-
loofah (~> 2.
|
162
|
+
rails-html-sanitizer (1.4.4)
|
163
|
+
loofah (~> 2.19, >= 2.19.1)
|
164
164
|
railties (7.0.4)
|
165
165
|
actionpack (= 7.0.4)
|
166
166
|
activesupport (= 7.0.4)
|
@@ -186,7 +186,7 @@ GEM
|
|
186
186
|
rspec-support (~> 3.11.0)
|
187
187
|
rspec-support (3.11.0)
|
188
188
|
thor (1.2.1)
|
189
|
-
timeout (0.3.
|
189
|
+
timeout (0.3.1)
|
190
190
|
tzinfo (2.0.5)
|
191
191
|
concurrent-ruby (~> 1.0)
|
192
192
|
webmock (3.14.0)
|
@@ -196,7 +196,7 @@ GEM
|
|
196
196
|
websocket-driver (0.7.5)
|
197
197
|
websocket-extensions (>= 0.1.0)
|
198
198
|
websocket-extensions (0.1.5)
|
199
|
-
zeitwerk (2.6.
|
199
|
+
zeitwerk (2.6.6)
|
200
200
|
|
201
201
|
PLATFORMS
|
202
202
|
ruby
|
@@ -98,6 +98,7 @@ module AppManager
|
|
98
98
|
charge['shop_domain'] = params[:shop]
|
99
99
|
charge['interval'] = plan_data['interval']['value']
|
100
100
|
|
101
|
+
['api_client_id', 'return_url', 'decorated_return_url','id','id','currency'].each { |k| charge.delete k }
|
101
102
|
# new_plan_obj = AppManager::Client.new
|
102
103
|
# if !@plan_field.nil?
|
103
104
|
# begin
|
@@ -142,7 +143,7 @@ module AppManager
|
|
142
143
|
redirect_to "#{app_url}?host=#{embed_host}&shop=#{params[:shop]}", :status => 301 and return
|
143
144
|
end
|
144
145
|
else
|
145
|
-
raise Error, "Invalid shopify charge #{charges.
|
146
|
+
raise Error, "Invalid shopify charge #{charges.inspect}"
|
146
147
|
end
|
147
148
|
else
|
148
149
|
raise ModelNotFound, "Shop not found"
|
@@ -84,7 +84,8 @@ module AppManager
|
|
84
84
|
public_val = plan['public'] ? 1 : 0
|
85
85
|
store_base_plan = plan['store_base_plan'] ? 1 : 0
|
86
86
|
choose_later_plan = plan['choose_later_plan'] ? 1 : 0
|
87
|
-
|
87
|
+
is_external_charge = plan['is_external_charge'] ? 1 : 0
|
88
|
+
plan_data << AppManager::Plan.new(plan_id: plan["id"], type: plan["type"], name: plan["name"], price: plan["price"], offer_text: plan["offer_text"], description: plan["description"], interval: interval, shopify_plans: shopify_plans, trial_days: plan["trial_days"], test: plan_test, on_install: plan["on_install"], is_custom: is_custom, app_id: plan["app_id"], base_plan: plan["base_plan"], created_at: plan["created_at"], updated_at: plan["updated_at"], public: public_val, discount: plan["discount"], cycle_count: plan["cycle_count"], store_base_plan: store_base_plan, choose_later_plan: choose_later_plan, discount_type: plan["discount_type"], affiliate: affiliate, features: features, deleted_at: plan["deleted_at"],is_external_charge: plan["is_external_charge"],external_charge_limit: plan["external_charge_limit"],terms: plan["terms"])
|
88
89
|
end
|
89
90
|
AppManager::Plan.bulk_import plan_data
|
90
91
|
end
|
@@ -102,7 +103,7 @@ module AppManager
|
|
102
103
|
charge_data = []
|
103
104
|
charges.each do |charge|
|
104
105
|
charge_test = charge['test'] ? true : false
|
105
|
-
charge_data << AppManager::Charge.new(charge_id: charge["charge_id"], test: charge_test, status: charge["status"], name: charge["name"], type: charge["type"], price: charge["price"], interval: charge["interval"], trial_days: charge["trial_days"], billing_on: charge["billing_on"], activated_on: charge["activated_on"], trial_ends_on: charge["trial_ends_on"], cancelled_on: charge["cancelled_on"], expires_on: charge["expires_on"], plan_id: charge["plan_id"], description: charge["description"], shop_domain: charge["shop_domain"], created_at: charge["created_at"], updated_at: charge["updated_at"], app_id: charge["app_id"], sync: true)
|
106
|
+
charge_data << AppManager::Charge.new(c_id: charge["id"],charge_id: charge["charge_id"], test: charge_test, status: charge["status"], name: charge["name"], type: charge["type"], price: charge["price"], interval: charge["interval"], trial_days: charge["trial_days"], billing_on: charge["billing_on"], activated_on: charge["activated_on"], trial_ends_on: charge["trial_ends_on"], cancelled_on: charge["cancelled_on"], expires_on: charge["expires_on"], plan_id: charge["plan_id"], description: charge["description"], shop_domain: charge["shop_domain"], created_at: charge["created_at"], updated_at: charge["updated_at"], app_id: charge["app_id"], sync: true)
|
106
107
|
end
|
107
108
|
AppManager::Charge.bulk_import charge_data
|
108
109
|
end
|
@@ -120,7 +121,7 @@ module AppManager
|
|
120
121
|
apps_data = []
|
121
122
|
apps.each do |app|
|
122
123
|
# apps_data << AppManager::App.new(id: app['id'], name: app['name'], slug: app['slug'], url: app['url'], image: app['image'], api_token: app['api_token'], slack: app['slack'], created_at: app['created_at'], updated_at: app['updated_at'])
|
123
|
-
apps_data << AppManager::App.new(name: app['name'], slug: app['slug'], url: app['url'], image: app['image'], api_token: app['api_token'], slack: app['slack'], created_at: app['created_at'], updated_at: app['updated_at'])
|
124
|
+
apps_data << AppManager::App.new(app_id: app['id'],name: app['name'], slug: app['slug'], url: app['url'], image: app['image'], api_token: app['api_token'], slack: app['slack'], created_at: app['created_at'], updated_at: app['updated_at'])
|
124
125
|
end
|
125
126
|
AppManager::Charge.bulk_import apps_data
|
126
127
|
end
|
@@ -147,7 +148,8 @@ module AppManager
|
|
147
148
|
if discount_plans.any?
|
148
149
|
discount_plans_data = []
|
149
150
|
discount_plans.each do |discount_plan|
|
150
|
-
discount_plans_data << AppManager::DiscountPlan.new(
|
151
|
+
discount_plans_data << AppManager::DiscountPlan.new(discount_plan_id: discount_plan['id'],discount: discount_plan['discount'], shop_domain: discount_plan['shop_domain'], cycle_count: discount_plan['cycle_count'], plan_id: discount_plan['plan_id'], created_by: discount_plan['created_by'], created_at: discount_plan['created_at'], updated_at: discount_plan['updated_at'], app_id: discount_plan['app_id'], discount_type: discount_plan['discount_type'])
|
152
|
+
# discount_plans_data << AppManager::DiscountPlan.new(id: discount_plan['id'], discount: discount_plan['discount'], shop_domain: discount_plan['shop_domain'], cycle_count: discount_plan['cycle_count'], plan_id: discount_plan['plan_id'], created_by: discount_plan['created_by'], created_at: discount_plan['created_at'], updated_at: discount_plan['updated_at'], app_id: discount_plan['app_id'], discount_type: discount_plan['discount_type'])
|
151
153
|
end
|
152
154
|
AppManager::DiscountPlan.bulk_import discount_plans_data
|
153
155
|
end
|
@@ -163,7 +165,8 @@ module AppManager
|
|
163
165
|
if extend_trials.any?
|
164
166
|
extend_trials_data = []
|
165
167
|
extend_trials.each do |extend_trial|
|
166
|
-
extend_trials_data << AppManager::ExtendTrial.new(
|
168
|
+
extend_trials_data << AppManager::ExtendTrial.new(extend_trial_id: extend_trial['id'],shop_domain: extend_trial['shop_domain'], plan_id: extend_trial['plan_id'], app_id: extend_trial['app_id'], days: extend_trial['days'], created_by: extend_trial['created_by'], created_at: extend_trial['created_at'], updated_at: extend_trial['updated_at'], extend_trial_start_at: extend_trial['extend_trial_start_at'])
|
169
|
+
# extend_trials_data << AppManager::ExtendTrial.new(id: extend_trial['id'], shop_domain: extend_trial['shop_domain'], plan_id: extend_trial['plan_id'], app_id: extend_trial['app_id'], days: extend_trial['days'], created_by: extend_trial['created_by'], created_at: extend_trial['created_at'], updated_at: extend_trial['updated_at'], extend_trial_start_at: extend_trial['extend_trial_start_at'])
|
167
170
|
end
|
168
171
|
AppManager::ExtendTrial.bulk_import extend_trials_data
|
169
172
|
end
|
@@ -179,7 +182,8 @@ module AppManager
|
|
179
182
|
if plan_users.any?
|
180
183
|
extend_plan_users = []
|
181
184
|
plan_users.each do |plan_user|
|
182
|
-
extend_plan_users << AppManager::PlanUser.new(
|
185
|
+
extend_plan_users << AppManager::PlanUser.new(plan_user_id: plan_user['id'],shop_domain: plan_user['shop_domain'], plan_id: plan_user['plan_id'], created_by: plan_user['created_by'], created_at: plan_user['created_at'], updated_at: plan_user['updated_at'])
|
186
|
+
# extend_plan_users << AppManager::PlanUser.new(id: plan_user['id'], shop_domain: plan_user['shop_domain'], plan_id: plan_user['plan_id'], created_by: plan_user['created_by'], created_at: plan_user['created_at'], updated_at: plan_user['updated_at'])
|
183
187
|
end
|
184
188
|
AppManager::ExtendTrial.bulk_import extend_plan_users
|
185
189
|
end
|
@@ -207,7 +211,7 @@ module AppManager
|
|
207
211
|
active_charge_price = charges.first['price']
|
208
212
|
elsif params['active_plan_id'].present? && !params['active_plan_id'].nil?
|
209
213
|
active_plan_id = params['active_plan_id']
|
210
|
-
plan_data = AppManager::Plan.where(
|
214
|
+
plan_data = AppManager::Plan.where(plan_id: active_plan_id)
|
211
215
|
active_charge_price = plan_data.first['price'] if plan_data.present?
|
212
216
|
end
|
213
217
|
|
@@ -216,7 +220,7 @@ module AppManager
|
|
216
220
|
custom_plan_ids = plan_users.pluck(:plan_id) if plan_users.present?
|
217
221
|
|
218
222
|
custom_plan_base_ids = []
|
219
|
-
plan_data = AppManager::Plan.where(
|
223
|
+
plan_data = AppManager::Plan.where(plan_id: custom_plan_ids).where.not(base_plan: nil)
|
220
224
|
custom_plan_base_ids = plan_data.pluck(:base_plan) if plan_data.present?
|
221
225
|
|
222
226
|
if active_plan_id && custom_plan_base_ids.include?(active_plan_id)
|
@@ -225,13 +229,13 @@ module AppManager
|
|
225
229
|
|
226
230
|
if custom_plan_base_ids.any?
|
227
231
|
if custom_plan_ids.present?
|
228
|
-
plans = AppManager::Plan.where("public = ? OR
|
232
|
+
plans = AppManager::Plan.where("public = ? OR plan_id IN (?)",true,custom_plan_ids).where.not(plan_id: custom_plan_base_ids)
|
229
233
|
else
|
230
|
-
plans = AppManager::Plan.where(public: true).where.not(
|
234
|
+
plans = AppManager::Plan.where(public: true).where.not(plan_id: custom_plan_base_ids)
|
231
235
|
end
|
232
236
|
else
|
233
237
|
if custom_plan_ids.present?
|
234
|
-
plans = AppManager::Plan.where("public = ? OR
|
238
|
+
plans = AppManager::Plan.where("public = ? OR plan_id IN (?)",true,custom_plan_ids)
|
235
239
|
else
|
236
240
|
plans = AppManager::Plan.where(public: true)
|
237
241
|
end
|
@@ -333,7 +337,7 @@ module AppManager
|
|
333
337
|
plan_data = {}
|
334
338
|
if params.any?
|
335
339
|
if params["plan_id"].present? && !params["plan_id"].nil?
|
336
|
-
plans = AppManager::Plan.where(
|
340
|
+
plans = AppManager::Plan.where(plan_id: params["plan_id"])
|
337
341
|
plans.each do |plan|
|
338
342
|
new_plan = {}
|
339
343
|
plan.as_json.each_with_index do |(key, value), index|
|
@@ -385,7 +389,7 @@ module AppManager
|
|
385
389
|
if params && params['trial_activated_at'].present? && !params['trial_activated_at'].nil? && params['shop_domain'].present? && params['plan_id'].present? && !params['plan_id'].nil?
|
386
390
|
@trial_activated_at = params['trial_activated_at']
|
387
391
|
@plan_id = params['plan_id']
|
388
|
-
plan_data = AppManager::Plan.where(
|
392
|
+
plan_data = AppManager::Plan.where(plan_id: @plan_id)
|
389
393
|
if plan_data.any?
|
390
394
|
trial_days = plan_data.first['trial_days']
|
391
395
|
trial_start_date = Date.parse(@trial_activated_at)
|
@@ -90,6 +90,28 @@ module AppManager
|
|
90
90
|
}
|
91
91
|
price_details.merge! plan_discount if plan_discount.any?
|
92
92
|
|
93
|
+
plan_var = {
|
94
|
+
"appRecurringPricingDetails": price_details,
|
95
|
+
}
|
96
|
+
|
97
|
+
line_items_data = [{
|
98
|
+
"plan": plan_var
|
99
|
+
}]
|
100
|
+
|
101
|
+
if plan['interval']['value'] == 'EVERY_30_DAYS' && plan['is_external_charge'].present? && plan['is_external_charge'] == true && plan['external_charge_limit'] != ''
|
102
|
+
plan_var_usage = {
|
103
|
+
"plan": {
|
104
|
+
"appUsagePricingDetails": {
|
105
|
+
"cappedAmount": {
|
106
|
+
"amount": plan['external_charge_limit'],
|
107
|
+
"currencyCode": "USD"
|
108
|
+
},
|
109
|
+
"terms": plan['terms']
|
110
|
+
}
|
111
|
+
}
|
112
|
+
}
|
113
|
+
line_items_data.push(plan_var_usage)
|
114
|
+
end
|
93
115
|
|
94
116
|
query = 'mutation(
|
95
117
|
$name: String!,
|
@@ -121,14 +143,10 @@ module AppManager
|
|
121
143
|
"returnUrl": return_url,
|
122
144
|
"trialDays": trial_days,
|
123
145
|
"test": plan_test,
|
124
|
-
"lineItems":
|
125
|
-
"plan": {
|
126
|
-
"appRecurringPricingDetails": price_details
|
127
|
-
}
|
128
|
-
}]
|
146
|
+
"lineItems": line_items_data
|
129
147
|
}
|
130
148
|
|
131
|
-
|
149
|
+
data = run_graph_api(query,variables)
|
132
150
|
return data
|
133
151
|
end
|
134
152
|
|
data/lib/app_manager/version.rb
CHANGED
@@ -31,6 +31,14 @@ module AppManager
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
+
def create_external_charge_field
|
35
|
+
if self.class.migration_exists?("db/app_manager", "add_external_charge_field")
|
36
|
+
say_status("skipped", "Migration add_external_charge_field.rb already exists")
|
37
|
+
else
|
38
|
+
migration_template("add_external_charge_field.erb", "db/app_manager/add_external_charge_field.rb")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
34
42
|
|
35
43
|
private
|
36
44
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class AddExternalChargeFields < ActiveRecord::Migration[<%= rails_migration_version %>]
|
2
|
+
def change
|
3
|
+
add_column :plans, :is_external_charge, :boolean unless column_exists? :plans, :is_external_charge, default: false
|
4
|
+
add_column :plans, :external_charge_limit, :bigint unless column_exists? :plans, :external_charge_limit
|
5
|
+
add_column :plans, :terms, :string unless column_exists? :plans, :terms
|
6
|
+
|
7
|
+
add_column :plans, :plan_id, :bigint unless column_exists? :plans, :plan_id
|
8
|
+
add_column :charges, :c_id, :bigint unless column_exists? :charges, :c_id
|
9
|
+
add_column :apps, :app_id, :bigint unless column_exists? :apps, :app_id
|
10
|
+
add_column :discount_plans, :discount_plan_id, :bigint unless column_exists? :discount_plans, :discount_plan_id
|
11
|
+
add_column :extend_trials, :extend_trial_id, :bigint unless column_exists? :extend_trials, :extend_trial_id
|
12
|
+
add_column :plan_users, :plan_user_id, :bigint unless column_exists? :plan_users, :plan_user_id
|
13
|
+
|
14
|
+
end
|
15
|
+
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.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hulkapps
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -118,6 +118,7 @@ files:
|
|
118
118
|
- lib/app_manager/tasks/sync/local_app_manager.rake
|
119
119
|
- lib/app_manager/version.rb
|
120
120
|
- lib/generators/app_manager/install/install_generator.rb
|
121
|
+
- lib/generators/app_manager/install/templates/add_external_charge_field.erb
|
121
122
|
- lib/generators/app_manager/install/templates/add_plan_trial_grandfathered_to_shops.erb
|
122
123
|
- lib/generators/app_manager/install/templates/app_manager.rb.tt
|
123
124
|
- lib/generators/app_manager/install/templates/failsafe_tables.erb
|