diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-23 15:09:36 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-23 15:09:36 +0000 |
commit | 074d013e1eb3f6e0c27f96a3be8b9361254c8a98 (patch) | |
tree | f185c474ddc8624a4793c84b0b1f4cc07349694b /lib/api/entities/commit_with_link.rb | |
parent | 8f9beefac3774b30e911fb00a68f4c7a5244cf27 (diff) | |
download | gitlab-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.rb | 53 |
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 |