diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-02-02 14:37:11 +0100 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-02-02 14:37:11 +0100 |
commit | 030adf12ce6dc8e10a9f0bbb34ff55aa818d7aed (patch) | |
tree | f5e505f9bb882b4a38319d7c449f13ebf435185a /app/serializers/pipeline_serializer.rb | |
parent | ac06070147f23909dfb5d3468a17a29e6b0cd447 (diff) | |
download | gitlab-ce-030adf12ce6dc8e10a9f0bbb34ff55aa818d7aed.tar.gz |
Encapsulate reused pagination component in a class
Diffstat (limited to 'app/serializers/pipeline_serializer.rb')
-rw-r--r-- | app/serializers/pipeline_serializer.rb | 37 |
1 files changed, 10 insertions, 27 deletions
diff --git a/app/serializers/pipeline_serializer.rb b/app/serializers/pipeline_serializer.rb index b2de6c5832e..7c8dfad3b4b 100644 --- a/app/serializers/pipeline_serializer.rb +++ b/app/serializers/pipeline_serializer.rb @@ -1,41 +1,24 @@ class PipelineSerializer < BaseSerializer class InvalidResourceError < StandardError; end - include API::Helpers::Pagination - Struct.new('Pagination', :request, :response) entity PipelineEntity + def with_pagination(request, response) + tap { @paginator = Paginator.new(request, response) } + end + + def paginated? + defined?(@paginator) + end + def represent(resource, opts = {}) if paginated? raise InvalidResourceError unless resource.respond_to?(:page) - super(paginate(resource.includes(project: :namespace)), opts) + resource = resource.includes(project: :namespace) + super(@paginator.paginate(resource), opts) else super(resource, opts) end end - - def paginated? - defined?(@pagination) - end - - def with_pagination(request, response) - tap { @pagination = Struct::Pagination.new(request, response) } - 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 |