mirror of
https://github.com/iv-org/invidious.git
synced 2025-07-10 14:15:48 -05:00
61 lines
1.6 KiB
Crystal
61 lines
1.6 KiB
Crystal
{% skip_file if flag?(:api_only) %}
|
|
|
|
module Invidious::Routes::Misc
|
|
def self.home(env)
|
|
preferences = env.get("preferences").as(Preferences)
|
|
locale = preferences.locale
|
|
user = env.get? "user"
|
|
|
|
case preferences.default_home
|
|
when "Popular"
|
|
env.redirect "/feed/popular"
|
|
when "Trending"
|
|
env.redirect "/feed/trending"
|
|
when "Subscriptions"
|
|
if user
|
|
env.redirect "/feed/subscriptions"
|
|
else
|
|
env.redirect "/feed/popular"
|
|
end
|
|
when "Playlists"
|
|
if user
|
|
env.redirect "/feed/playlists"
|
|
else
|
|
env.redirect "/feed/popular"
|
|
end
|
|
else
|
|
templated "search_homepage", navbar_search: false
|
|
end
|
|
end
|
|
|
|
def self.privacy(env)
|
|
locale = env.get("preferences").as(Preferences).locale
|
|
templated "privacy"
|
|
end
|
|
|
|
def self.licenses(env)
|
|
locale = env.get("preferences").as(Preferences).locale
|
|
rendered "licenses"
|
|
end
|
|
|
|
def self.cross_instance_redirect(env)
|
|
referer = get_referer(env)
|
|
|
|
instance_list = Invidious::Jobs::InstanceListRefreshJob::INSTANCES["INSTANCES"]
|
|
# Filter out the current instance
|
|
other_available_instances = instance_list.reject { |_, domain| domain == CONFIG.domain }
|
|
|
|
if other_available_instances.empty?
|
|
# If the current instance is the only one, use the redirect URL as fallback
|
|
instance_url = "redirect.invidious.io"
|
|
else
|
|
# Select other random instance
|
|
# Sample returns an array
|
|
# Instances are packaged as {region, domain} in the instance list
|
|
instance_url = other_available_instances.sample(1)[0][1]
|
|
end
|
|
|
|
env.redirect "https://#{instance_url}#{referer}"
|
|
end
|
|
end
|