gitlab-org--gitlab-foss/lib/api/internal/pages.rb

72 lines
2.5 KiB
Ruby

# frozen_string_literal: true
module API
# Pages Internal API
module Internal
class Pages < ::API::Base
feature_category :pages
before do
authenticate_gitlab_pages_request!
end
helpers do
def authenticate_gitlab_pages_request!
unauthorized! unless Gitlab::Pages.verify_api_request(headers)
end
end
namespace 'internal' do
namespace 'pages' do
desc 'Indicates that pages API is enabled and auth token is valid' do
detail 'This feature was introduced in GitLab 12.10.'
end
get "status" do
no_content!
end
desc 'Get GitLab Pages domain configuration by hostname' do
detail 'This feature was introduced in GitLab 12.3.'
end
params do
requires :host, type: String, desc: 'The host to query for'
end
get "/" do
##
# Serverless domain proxy has been deprecated and disabled as per
# https://gitlab.com/gitlab-org/gitlab-pages/-/issues/467
#
# serverless_domain_finder = ServerlessDomainFinder.new(params[:host])
# if serverless_domain_finder.serverless?
# # Handle Serverless domains
# serverless_domain = serverless_domain_finder.execute
# no_content! unless serverless_domain
#
# virtual_domain = Serverless::VirtualDomain.new(serverless_domain)
# no_content! unless virtual_domain
#
# present virtual_domain, with: Entities::Internal::Serverless::VirtualDomain
# end
host = Namespace.find_by_pages_host(params[:host]) || PagesDomain.find_by_domain_case_insensitive(params[:host])
no_content! unless host
virtual_domain = host.pages_virtual_domain
no_content! unless virtual_domain
if virtual_domain.cache_key.present?
# Cache context is not added to make it easier to expire the cache with
# Gitlab::Pages::CacheControl
present_cached virtual_domain,
cache_context: nil,
with: Entities::Internal::Pages::VirtualDomain,
expires_in: ::Gitlab::Pages::CacheControl::EXPIRE
else
present virtual_domain, with: Entities::Internal::Pages::VirtualDomain
end
end
end
end
end
end
end