summaryrefslogtreecommitdiff
path: root/lib/atlassian/jira_connect/serializers/file_entity.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/atlassian/jira_connect/serializers/file_entity.rb')
-rw-r--r--lib/atlassian/jira_connect/serializers/file_entity.rb38
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/atlassian/jira_connect/serializers/file_entity.rb b/lib/atlassian/jira_connect/serializers/file_entity.rb
new file mode 100644
index 00000000000..50d31965f93
--- /dev/null
+++ b/lib/atlassian/jira_connect/serializers/file_entity.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+module Atlassian
+ module JiraConnect
+ module Serializers
+ class FileEntity < Grape::Entity
+ include Gitlab::Routing
+
+ expose :path do |file|
+ file.deleted_file? ? file.old_path : file.new_path
+ end
+ expose :changeType do |file|
+ if file.new_file?
+ 'ADDED'
+ elsif file.deleted_file?
+ 'DELETED'
+ elsif file.renamed_file?
+ 'MOVED'
+ else
+ 'MODIFIED'
+ end
+ end
+ expose :added_lines, as: :linesAdded
+ expose :removed_lines, as: :linesRemoved
+
+ expose :url do |file, options|
+ file_path = if file.deleted_file?
+ File.join(options[:commit].parent_id, file.old_path)
+ else
+ File.join(options[:commit].id, file.new_path)
+ end
+
+ project_blob_url(options[:project], file_path)
+ end
+ end
+ end
+ end
+end