File: numbers_api.rb

package info (click to toggle)
ruby-api-pagination 4.8.2-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 272 kB
  • sloc: ruby: 1,125; makefile: 3
file content (41 lines) | stat: -rw-r--r-- 1,137 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
require 'grape'
require 'api-pagination'

class NumbersAPI < Grape::API
  format :json

  desc 'Return some paginated set of numbers'
  paginate :per_page => 10
  params do
    requires :count, :type => Integer
    optional :with_headers, :default => false, :type => Boolean
  end
  get :numbers do
    if params[:with_headers]
      url   = request.url.sub(/\?.*/, '')
      query = Rack::Utils.parse_query(request.query_string)
      query.delete('with_headers')
      header 'Link', %(<#{url}?#{query.to_query}>; rel="without")
    end

    paginate (1..params[:count]).to_a
  end

  desc 'Return some paginated set of numbers with max_per_page'
  paginate :per_page => 10, :max_per_page => 25
  params do
    requires :count, :type => Integer
  end
  get :numbers_with_max_per_page  do
    paginate (1..params[:count]).to_a
  end

  desc 'Return some paginated set of numbers with max_per_page enforced'
  paginate :per_page => 10, :max_per_page => 25, :enforce_max_per_page => true
  params do
    requires :count, :type => Integer
  end
  get :numbers_with_enforced_max_per_page  do
    paginate (1..params[:count]).to_a
  end
end