summaryrefslogtreecommitdiff
path: root/lib/api/entities.rb
diff options
context:
space:
mode:
authorRobert Speicher <rspeicher@gmail.com>2019-05-08 14:56:53 -0500
committerRobert Speicher <rspeicher@gmail.com>2019-05-08 14:56:53 -0500
commit2f003b58645b3cbc987c240f844b1ff6eb0c026a (patch)
tree07c2087939b6c6dce33620c57a6989d76547e681 /lib/api/entities.rb
parent204dca4436f5b2c82611a873d05186ec4ff4c17c (diff)
parent2084301b4ec863d65638cc0c30c124cb5fe4b3d8 (diff)
downloadgitlab-ce-11-11-stable-prepare-rc2.tar.gz
Merge branch 'rs-pre-freeze' into 11-11-stable-prepare-rc211-11-stable-prepare-rc2
Diffstat (limited to 'lib/api/entities.rb')
-rw-r--r--lib/api/entities.rb21
1 files changed, 16 insertions, 5 deletions
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index ee8480122c4..90ed24a2ded 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -1156,22 +1156,33 @@ module API
end
end
- class Release < TagRelease
+ class Release < Grape::Entity
expose :name
+ expose :tag, as: :tag_name, if: lambda { |_, _| can_download_code? }
+ expose :description
expose :description_html do |entity|
MarkupHelper.markdown_field(entity, :description)
end
expose :created_at
expose :author, using: Entities::UserBasic, if: -> (release, _) { release.author.present? }
- expose :commit, using: Entities::Commit
+ expose :commit, using: Entities::Commit, if: lambda { |_, _| can_download_code? }
expose :assets do
- expose :assets_count, as: :count
- expose :sources, using: Entities::Releases::Source
+ expose :assets_count, as: :count do |release, _|
+ assets_to_exclude = can_download_code? ? [] : [:sources]
+ release.assets_count(except: assets_to_exclude)
+ end
+ expose :sources, using: Entities::Releases::Source, if: lambda { |_, _| can_download_code? }
expose :links, using: Entities::Releases::Link do |release, options|
release.links.sorted
end
end
+
+ private
+
+ def can_download_code?
+ Ability.allowed?(options[:current_user], :download_code, object.project)
+ end
end
class Tag < Grape::Entity
@@ -1277,7 +1288,7 @@ module API
end
class Variable < Grape::Entity
- expose :key, :value
+ expose :variable_type, :key, :value
expose :protected?, as: :protected, if: -> (entity, _) { entity.respond_to?(:protected?) }
end