File tree Expand file tree Collapse file tree 6 files changed +30
-0
lines changed Expand file tree Collapse file tree 6 files changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -39,6 +39,9 @@ ApiPagination.configure do |config|
39
39
40
40
# By default, this is set to 'Per-Page'
41
41
config.per_page_header = ' X-Per-Page'
42
+
43
+ # Optional : set this to add a header with the current page number.
44
+ config.page_header = ' X-Page'
42
45
end
43
46
```
44
47
Original file line number Diff line number Diff line change @@ -4,13 +4,16 @@ class Configuration
4
4
5
5
attr_accessor :per_page_header
6
6
7
+ attr_accessor :page_header
8
+
7
9
def configure ( &block )
8
10
yield self
9
11
end
10
12
11
13
def initialize
12
14
@total_header = 'Total'
13
15
@per_page_header = 'Per-Page'
16
+ @page_header = nil
14
17
end
15
18
16
19
def paginator
Original file line number Diff line number Diff line change @@ -22,10 +22,12 @@ def paginate(collection)
22
22
23
23
total_header = ApiPagination . config . total_header
24
24
per_page_header = ApiPagination . config . per_page_header
25
+ page_header = ApiPagination . config . page_header
25
26
26
27
header 'Link' , links . join ( ', ' ) unless links . empty?
27
28
header total_header , ApiPagination . total_from ( collection )
28
29
header per_page_header , options [ :per_page ] . to_s
30
+ header page_header , options [ :page ] . to_s unless page_header . nil?
29
31
30
32
return collection
31
33
end
Original file line number Diff line number Diff line change @@ -41,10 +41,12 @@ def _paginate_collection(collection, options={})
41
41
42
42
total_header = ApiPagination . config . total_header
43
43
per_page_header = ApiPagination . config . per_page_header
44
+ page_header = ApiPagination . config . page_header
44
45
45
46
headers [ 'Link' ] = links . join ( ', ' ) unless links . empty?
46
47
headers [ total_header ] = ApiPagination . total_from ( collection )
47
48
headers [ per_page_header ] = options [ :per_page ] . to_s
49
+ headers [ page_header ] = options [ :page ] . to_s unless page_header . nil?
48
50
49
51
return collection
50
52
end
Original file line number Diff line number Diff line change 71
71
before do
72
72
ApiPagination . config . total_header = 'X-Total-Count'
73
73
ApiPagination . config . per_page_header = 'X-Per-Page'
74
+ ApiPagination . config . page_header = 'X-Page'
74
75
75
76
get '/numbers' , count : 10
76
77
end
77
78
78
79
after do
79
80
ApiPagination . config . total_header = 'Total'
80
81
ApiPagination . config . per_page_header = 'Per-Page'
82
+ ApiPagination . config . page_header = nil
81
83
end
82
84
83
85
let ( :total ) { last_response . header [ 'X-Total-Count' ] . to_i }
84
86
let ( :per_page ) { last_response . header [ 'X-Per-Page' ] . to_i }
87
+ let ( :page ) { last_response . header [ 'X-Page' ] . to_i }
85
88
86
89
it 'should give a X-Total-Count header' do
87
90
headers_keys = last_response . headers . keys
98
101
expect ( headers_keys ) . to include ( 'X-Per-Page' )
99
102
expect ( per_page ) . to eq ( 10 )
100
103
end
104
+
105
+ it 'should give a X-Page header' do
106
+ headers_keys = last_response . headers . keys
107
+
108
+ expect ( headers_keys ) . to include ( 'X-Page' )
109
+ expect ( page ) . to eq ( 1 )
110
+ end
101
111
end
102
112
103
113
context 'with query string including array parameter' do
Original file line number Diff line number Diff line change 73
73
before do
74
74
ApiPagination . config . total_header = 'X-Total-Count'
75
75
ApiPagination . config . per_page_header = 'X-Per-Page'
76
+ ApiPagination . config . page_header = 'X-Page'
76
77
77
78
get :index , count : 10
78
79
end
79
80
80
81
after do
81
82
ApiPagination . config . total_header = 'Total'
82
83
ApiPagination . config . per_page_header = 'Per-Page'
84
+ ApiPagination . config . page_header = nil
83
85
end
84
86
85
87
let ( :total ) { response . header [ 'X-Total-Count' ] . to_i }
86
88
let ( :per_page ) { response . header [ 'X-Per-Page' ] . to_i }
89
+ let ( :page ) { response . header [ 'X-Page' ] . to_i }
87
90
88
91
it 'should give a X-Total-Count header' do
89
92
headers_keys = response . headers . keys
100
103
expect ( headers_keys ) . to include ( 'X-Per-Page' )
101
104
expect ( per_page ) . to eq ( 10 )
102
105
end
106
+
107
+ it 'should give a X-Page header' do
108
+ headers_keys = response . headers . keys
109
+
110
+ expect ( headers_keys ) . to include ( 'X-Page' )
111
+ expect ( page ) . to eq ( 1 )
112
+ end
103
113
end
104
114
end
105
115
end
You can’t perform that action at this time.
0 commit comments