docbrown/app/controllers/deep_links_controller.rb
Fernando Valverde 015a9c1923
Add exclusion to AASA supported paths (#14593)
* Add exclution to AASA supported paths

* Fix specs and extract supported paths in constant
2021-08-26 10:17:39 -06:00

34 lines
1.1 KiB
Ruby

class DeepLinksController < ApplicationController
AASA_PATHS = ["/*", "NOT /users/auth/*"].freeze
def mobile; end
# Apple Application Site Association - based on Apple docs guidelines
# https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html
def aasa
# This query plucks :team_id & :app_bundle so we get an array or arrays
# Example: [['TEAM1', 'app.bundle.one'], ['TEAM2', 'app.bundle.two']]
consumer_apps = ConsumerApps::FindOrCreateAllQuery.call
.where(platform: Device::IOS)
.where.not(team_id: nil)
.order(:created_at)
.pluck(:team_id, :app_bundle)
# Now restructure the array of arrays into valid AASA App ID's
# Example: ['TEAM1.app.bundle.one', 'TEAM2.app.bundle.two']
supported_apps = consumer_apps.map { |result| result.join(".") }
render json: {
applinks: {
apps: [],
details: supported_apps.map { |app_id| { appID: app_id, paths: AASA_PATHS } }
},
activitycontinuation: {
apps: supported_apps
},
webcredentials: {
apps: supported_apps
}
}
end
end