diff options
Diffstat (limited to 'lib/gitlab/static_site_editor/config.rb')
-rw-r--r-- | lib/gitlab/static_site_editor/config.rb | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/lib/gitlab/static_site_editor/config.rb b/lib/gitlab/static_site_editor/config.rb index 4bc0fc95abd..41d54ee0a92 100644 --- a/lib/gitlab/static_site_editor/config.rb +++ b/lib/gitlab/static_site_editor/config.rb @@ -3,33 +3,49 @@ module Gitlab module StaticSiteEditor class Config + SUPPORTED_EXTENSIONS = %w[.md].freeze + def initialize(repository, ref, file_path, return_url) @repository = repository @ref = ref @file_path = file_path @return_url = return_url + @commit_id = repository.commit(ref)&.id if ref end def payload { branch: ref, path: file_path, - commit: commit.id, + commit_id: commit_id, project_id: project.id, project: project.path, namespace: project.namespace.path, - return_url: return_url + return_url: return_url, + is_supported_content: supported_content? } end private - attr_reader :repository, :ref, :file_path, :return_url + attr_reader :repository, :ref, :file_path, :return_url, :commit_id delegate :project, to: :repository - def commit - repository.commit(ref) + def supported_content? + master_branch? && extension_supported? && file_exists? + end + + def master_branch? + ref == 'master' + end + + def extension_supported? + File.extname(file_path).in?(SUPPORTED_EXTENSIONS) + end + + def file_exists? + commit_id.present? && repository.blob_at(commit_id, file_path).present? end end end |