summaryrefslogtreecommitdiff
path: root/app/serializers/container_repository_entity.rb
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2017-09-21 12:21:50 +0200
committerKamil Trzcinski <ayufan@ayufan.eu>2017-09-21 12:21:50 +0200
commit8ba9c2bd6d10c74529a0e2e6bb894c34614966f1 (patch)
treec80ff14075e4d4bfc96828b3f980c6fd51429398 /app/serializers/container_repository_entity.rb
parentee3cf5d6f3d5a3631fa7e94a242f2dfe9b38a935 (diff)
downloadgitlab-ce-8ba9c2bd6d10c74529a0e2e6bb894c34614966f1.tar.gz
Add ContainerTag and ContainerRepository frontend API
Diffstat (limited to 'app/serializers/container_repository_entity.rb')
-rw-r--r--app/serializers/container_repository_entity.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/app/serializers/container_repository_entity.rb b/app/serializers/container_repository_entity.rb
new file mode 100644
index 00000000000..1103cf30a07
--- /dev/null
+++ b/app/serializers/container_repository_entity.rb
@@ -0,0 +1,25 @@
+class ContainerRepositoryEntity < Grape::Entity
+ include RequestAwareEntity
+
+ expose :id, :path, :location
+
+ expose :tags_path do |repository|
+ project_registry_repository_tags_path(project, repository, format: :json)
+ end
+
+ expose :destroy_path, if: -> (*) { can_destroy? } do |repository|
+ project_container_registry_path(project, repository, format: :json)
+ end
+
+ private
+
+ alias_method :repository, :object
+
+ def project
+ request.project
+ end
+
+ def can_destroy?
+ can?(request.current_user, :update_container_image, project)
+ end
+end