59 lines
1.6 KiB
Ruby
59 lines
1.6 KiB
Ruby
module ConsumerApps
|
|
class RpushAppQuery
|
|
def self.call(app_bundle:, platform:)
|
|
new(app_bundle: app_bundle, platform: platform).call
|
|
end
|
|
|
|
def initialize(app_bundle:, platform:)
|
|
@app_bundle = app_bundle
|
|
@platform = platform
|
|
@app_name = "#{app_bundle}.#{platform}"
|
|
|
|
@consumer_app = ConsumerApps::FindOrCreateByQuery.call(
|
|
app_bundle: @app_bundle,
|
|
platform: @platform,
|
|
)
|
|
end
|
|
|
|
def call
|
|
if consumer_app.android?
|
|
android_app = Rpush::Gcm::App.where(name: app_name).first
|
|
android_app || recreate_android_app!
|
|
elsif consumer_app.ios?
|
|
ios_app = Rpush::Apns2::App.where(name: app_name).first
|
|
ios_app || recreate_ios_app!
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :app_bundle, :app_name, :consumer_app, :platform
|
|
|
|
def recreate_ios_app!
|
|
# If the ConsumerApp doesn't have credentials there's no need to create it
|
|
return if consumer_app.auth_credentials.blank?
|
|
|
|
app = Rpush::Apns2::App.new
|
|
app.name = app_name
|
|
app.certificate = consumer_app.auth_credentials.to_s.gsub("\\n", "\n")
|
|
app.environment = Rails.env
|
|
app.password = ""
|
|
app.bundle_id = app_bundle
|
|
app.connections = 1
|
|
app.save!
|
|
app
|
|
end
|
|
|
|
def recreate_android_app!
|
|
# If the ConsumerApp doesn't have credentials there's no need to create it
|
|
return if consumer_app.auth_credentials.blank?
|
|
|
|
app = Rpush::Gcm::App.new
|
|
app.name = app_name
|
|
app.auth_key = consumer_app.auth_credentials.to_s
|
|
app.connections = 1
|
|
app.save!
|
|
app
|
|
end
|
|
end
|
|
end
|