Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/atlassian/jira_connect/serializers/commit_entity.rb')
-rw-r--r--lib/atlassian/jira_connect/serializers/commit_entity.rb45
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/atlassian/jira_connect/serializers/commit_entity.rb b/lib/atlassian/jira_connect/serializers/commit_entity.rb
new file mode 100644
index 00000000000..12eb1ed15ea
--- /dev/null
+++ b/lib/atlassian/jira_connect/serializers/commit_entity.rb
@@ -0,0 +1,45 @@
+# frozen_string_literal: true
+
+module Atlassian
+ module JiraConnect
+ module Serializers
+ class CommitEntity < BaseEntity
+ CommitAuthor = Struct.new(:name, :email)
+
+ expose :id
+ expose :issueKeys do |commit|
+ JiraIssueKeyExtractor.new(commit.safe_message).issue_keys
+ end
+ expose :id, as: :hash
+ expose :short_id, as: :displayId
+ expose :safe_message, as: :message
+ expose :flags do |commit|
+ if commit.merge_commit?
+ ['MERGE_COMMIT']
+ else
+ []
+ end
+ end
+ expose :author, using: JiraConnect::Serializers::AuthorEntity
+ expose :fileCount do |commit|
+ commit.stats.total
+ end
+ expose :files do |commit, options|
+ files = commit.diffs(max_files: 10).diff_files
+ JiraConnect::Serializers::FileEntity.represent files, options.merge(commit: commit)
+ end
+ expose :created_at, as: :authorTimestamp
+
+ expose :url do |commit, options|
+ project_commit_url(options[:project], commit.id)
+ end
+
+ private
+
+ def author
+ object.author || CommitAuthor.new(object.author_name, object.author_email)
+ end
+ end
+ end
+ end
+end