1# frozen_string_literal: true 2 3module Atlassian 4 module JiraConnect 5 module Serializers 6 class CommitEntity < BaseEntity 7 CommitAuthor = Struct.new(:name, :email) 8 9 expose :id 10 expose :issueKeys do |commit| 11 JiraIssueKeyExtractor.new(commit.safe_message).issue_keys 12 end 13 expose :id, as: :hash 14 expose :short_id, as: :displayId 15 expose :safe_message, as: :message 16 expose :flags do |commit| 17 if commit.merge_commit? 18 ['MERGE_COMMIT'] 19 else 20 [] 21 end 22 end 23 expose :author, using: JiraConnect::Serializers::AuthorEntity 24 expose :fileCount do |commit| 25 commit.stats.total 26 end 27 expose :files do |commit, options| 28 files = commit.diffs(max_files: 10).diff_files 29 JiraConnect::Serializers::FileEntity.represent files, options.merge(commit: commit) 30 end 31 expose :created_at, as: :authorTimestamp 32 33 expose :url do |commit, options| 34 project_commit_url(options[:project], commit.id) 35 end 36 37 private 38 39 def author 40 object.author || CommitAuthor.new(object.author_name, object.author_email) 41 end 42 end 43 end 44 end 45end 46