summaryrefslogtreecommitdiff
path: root/app/serializers
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-12-07 15:22:01 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-12-07 15:23:07 +0100
commitf55fcef3dbadf5f3003e0a51633e30e05b47c51d (patch)
tree675555cc5c7c3942da790374736912fcf04df6b0 /app/serializers
parent7870614fb94ce3eb1531e77dc824f4832a808571 (diff)
downloadgitlab-ce-f55fcef3dbadf5f3003e0a51633e30e05b47c51d.tar.gz
Add prototype of pipelines serializer with pagination
Diffstat (limited to 'app/serializers')
-rw-r--r--app/serializers/pipeline_serializer.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/app/serializers/pipeline_serializer.rb b/app/serializers/pipeline_serializer.rb
index f7abbec7d45..c4ca5c40dba 100644
--- a/app/serializers/pipeline_serializer.rb
+++ b/app/serializers/pipeline_serializer.rb
@@ -1,3 +1,37 @@
class PipelineSerializer < BaseSerializer
entity PipelineEntity
+ include API::Helpers::Pagination
+ Struct.new('Pagination', :request, :response)
+
+ def with_pagination(request, response)
+ tap { @pagination = Struct::Pagination.new(request, response) }
+ end
+
+ def paginate?
+ defined?(@pagination)
+ end
+
+ def represent(resource, opts = {})
+ if paginate?
+ super(paginate(resource), opts)
+ else
+ super(resource, opts)
+ end
+ end
+
+ private
+
+ # Methods needed by `API::Helpers::Pagination`
+ #
+ def params
+ @pagination.request.query_parameters
+ end
+
+ def request
+ @pagination.request
+ end
+
+ def header(header, value)
+ @pagination.response.headers[header] = value
+ end
end