summaryrefslogtreecommitdiff
path: root/lib/api/entities/commit_with_link.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-03-23 15:09:36 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-03-23 15:09:36 +0000
commit074d013e1eb3f6e0c27f96a3be8b9361254c8a98 (patch)
treef185c474ddc8624a4793c84b0b1f4cc07349694b /lib/api/entities/commit_with_link.rb
parent8f9beefac3774b30e911fb00a68f4c7a5244cf27 (diff)
downloadgitlab-ce-074d013e1eb3f6e0c27f96a3be8b9361254c8a98.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/api/entities/commit_with_link.rb')
-rw-r--r--lib/api/entities/commit_with_link.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/lib/api/entities/commit_with_link.rb b/lib/api/entities/commit_with_link.rb
new file mode 100644
index 00000000000..31a9efed9bc
--- /dev/null
+++ b/lib/api/entities/commit_with_link.rb
@@ -0,0 +1,53 @@
+# frozen_string_literal: true
+
+module API
+ module Entities
+ class CommitWithLink < Commit
+ include MarkupHelper
+ include RequestAwareEntity
+
+ expose :author, using: Entities::UserPath
+
+ expose :author_gravatar_url do |commit|
+ GravatarService.new.execute(commit.author_email)
+ end
+
+ expose :commit_url do |commit, options|
+ project_commit_url(request.project, commit, params: options.fetch(:commit_url_params, {}))
+ end
+
+ expose :commit_path do |commit, options|
+ project_commit_path(request.project, commit, params: options.fetch(:commit_url_params, {}))
+ end
+
+ expose :description_html, if: { type: :full } do |commit|
+ markdown_field(commit, :description)
+ end
+
+ expose :title_html, if: { type: :full } do |commit|
+ markdown_field(commit, :title)
+ end
+
+ expose :signature_html, if: { type: :full } do |commit|
+ render('projects/commit/_signature', signature: commit.signature) if commit.has_signature?
+ end
+
+ expose :pipeline_status_path, if: { type: :full } do |commit, options|
+ pipeline_ref = options[:pipeline_ref]
+ pipeline_project = options[:pipeline_project] || commit.project
+ next unless pipeline_ref && pipeline_project
+
+ pipeline = commit.latest_pipeline_for_project(pipeline_ref, pipeline_project)
+ next unless pipeline&.status
+
+ pipelines_project_commit_path(pipeline_project, commit.id, ref: pipeline_ref)
+ end
+
+ def render(*args)
+ return unless request.respond_to?(:render) && request.render.respond_to?(:call)
+
+ request.render.call(*args)
+ end
+ end
+ end
+end