DEV: Introduce syntax_tree for ruby formatting (#144)

This commit is contained in:
David Taylor
2022-12-29 13:35:06 +01:00
committed by GitHub
parent cbbc23fd5a
commit 4e1a17c40c
35 changed files with 980 additions and 844 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
module ::DiscourseSubscriptions
class Engine < ::Rails::Engine
engine_name 'discourse-subscriptions'
engine_name "discourse-subscriptions"
isolate_namespace DiscourseSubscriptions
end
end
+44 -32
View File
@@ -1,23 +1,23 @@
# frozen_string_literal: true
require 'stripe'
require 'highline/import'
require "stripe"
require "highline/import"
desc 'Import subscriptions from Stripe'
task 'subscriptions:subscriptions_import' => :environment do
desc "Import subscriptions from Stripe"
task "subscriptions:subscriptions_import" => :environment do
setup_api
products = get_stripe_products
strip_products_to_import = []
procourse_import = false
procourse_import_response = ask("Were the subscriptions you are importing created in Procourse Memberships?: (y/N)")
if procourse_import_response.downcase == 'y'
procourse_import = true
end
procourse_import_response =
ask("Were the subscriptions you are importing created in Procourse Memberships?: (y/N)")
procourse_import = true if procourse_import_response.downcase == "y"
products.each do |product|
confirm_import = ask("Do you wish to import product #{product[:name]} (id: #{product[:id]}): (y/N)")
next if confirm_import.downcase != 'y'
confirm_import =
ask("Do you wish to import product #{product[:name]} (id: #{product[:id]}): (y/N)")
next if confirm_import.downcase != "y"
strip_products_to_import << product
end
@@ -26,28 +26,28 @@ task 'subscriptions:subscriptions_import' => :environment do
end
def get_stripe_products(starting_after: nil)
puts 'Getting products from Stripe API'
puts "Getting products from Stripe API"
all_products = []
loop do
products = Stripe::Product.list({ type: 'service', starting_after: starting_after, active: true })
products =
Stripe::Product.list({ type: "service", starting_after: starting_after, active: true })
all_products += products[:data]
break if products[:has_more] == false
starting_after = products[:data].last["id"]
end
all_products
end
def get_stripe_subscriptions(starting_after: nil)
puts 'Getting Subscriptions from Stripe API'
puts "Getting Subscriptions from Stripe API"
all_subscriptions = []
loop do
subscriptions = Stripe::Subscription.list({ starting_after: starting_after, status: 'active' })
subscriptions = Stripe::Subscription.list({ starting_after: starting_after, status: "active" })
all_subscriptions += subscriptions[:data]
break if subscriptions[:has_more] == false
starting_after = subscriptions[:data].last["id"]
@@ -57,7 +57,7 @@ def get_stripe_subscriptions(starting_after: nil)
end
def get_stripe_customers(starting_after: nil)
puts 'Getting Customers from Stripe API'
puts "Getting Customers from Stripe API"
all_customers = []
@@ -72,7 +72,7 @@ def get_stripe_customers(starting_after: nil)
end
def import_products(products)
puts 'Importing products:'
puts "Importing products:"
products.each do |product|
puts "Looking for external_id #{product[:id]} ..."
@@ -86,7 +86,7 @@ def import_products(products)
end
def import_subscriptions(procourse_import)
puts 'Importing subscriptions'
puts "Importing subscriptions"
product_ids = DiscourseSubscriptions::Product.all.pluck(:external_id)
all_customers = get_stripe_customers
@@ -95,7 +95,8 @@ def import_subscriptions(procourse_import)
subscriptions = get_stripe_subscriptions
puts "Total Active Subscriptions available: #{subscriptions.length.to_s}"
subscriptions_for_products = subscriptions.select { |sub| product_ids.include?(sub[:items][:data][0][:price][:product]) }
subscriptions_for_products =
subscriptions.select { |sub| product_ids.include?(sub[:items][:data][0][:price][:product]) }
puts "Total Subscriptions matching Products to Import: #{subscriptions_for_products.length.to_s}"
subscriptions_for_products.each do |subscription|
@@ -113,29 +114,38 @@ def import_subscriptions(procourse_import)
end
if product_id && customer_id && subscription_id
subscriptions_customer = DiscourseSubscriptions::Customer.find_by(user_id: user_id, customer_id: customer_id, product_id: product_id)
subscriptions_customer =
DiscourseSubscriptions::Customer.find_by(
user_id: user_id,
customer_id: customer_id,
product_id: product_id,
)
if subscriptions_customer.nil? && user_id && user_id > 0
# create the customer record if doesn't exist only if the user_id and username match, which
# prevents issues if multiple sites use the same Stripe account. Does not apply to a Procourse import.
user = User.find(user_id)
if procourse_import || (user && (user.username == username))
subscriptions_customer = DiscourseSubscriptions::Customer.create(
user_id: user_id,
customer_id: customer_id,
product_id: product_id
)
puts "Subscriptions Customer user_id: #{user_id}, customer_id: #{customer_id}, product_id: #{product_id}) CREATED"
subscriptions_customer =
DiscourseSubscriptions::Customer.create(
user_id: user_id,
customer_id: customer_id,
product_id: product_id,
)
puts "Subscriptions Customer user_id: #{user_id}, customer_id: #{customer_id}, product_id: #{product_id}) CREATED"
end
else
puts "Subscriptions Customer user_id: #{user_id}, customer_id: #{customer_id}, product_id: #{product_id}) already exists"
end
if subscriptions_customer
if DiscourseSubscriptions::Subscription.find_by(customer_id: subscriptions_customer.id, external_id: subscription_id).blank?
if DiscourseSubscriptions::Subscription.find_by(
customer_id: subscriptions_customer.id,
external_id: subscription_id,
).blank?
DiscourseSubscriptions::Subscription.create(
customer_id: subscriptions_customer.id,
external_id: subscription_id
external_id: subscription_id,
)
puts "Discourse Subscription customer_id: #{subscriptions_customer.id}, external_id: #{subscription_id}) CREATED"
else
@@ -147,9 +157,11 @@ def import_subscriptions(procourse_import)
discourse_user = User.find(user_id)
puts "Discourse User: #{discourse_user.username_lower} found for Strip metadata update ..."
updated_subscription = Stripe::Subscription.update(subscription_id,
{ metadata: { user_id: user_id,
username: discourse_user.username_lower } })
updated_subscription =
Stripe::Subscription.update(
subscription_id,
{ metadata: { user_id: user_id, username: discourse_user.username_lower } },
)
puts "Stripe Subscription: #{updated_subscription[:id]}, metadata: #{updated_subscription[:metadata]} UPDATED"
updated_customer = Stripe::Customer.update(customer_id, { email: discourse_user.email })
@@ -163,6 +175,6 @@ end
private
def setup_api
api_key = SiteSetting.discourse_subscriptions_secret_key || ask('Input Stripe secret key')
api_key = SiteSetting.discourse_subscriptions_secret_key || ask("Input Stripe secret key")
Stripe.api_key = api_key
end