apes 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +7 -0
- data/.rubocop.yml +82 -0
- data/.travis-gemfile +15 -0
- data/.travis.yml +15 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +22 -0
- data/README.md +177 -0
- data/Rakefile +44 -0
- data/apes.gemspec +34 -0
- data/doc/Apes.html +130 -0
- data/doc/Apes/Concerns.html +127 -0
- data/doc/Apes/Concerns/Errors.html +1089 -0
- data/doc/Apes/Concerns/Pagination.html +636 -0
- data/doc/Apes/Concerns/Request.html +766 -0
- data/doc/Apes/Concerns/Response.html +940 -0
- data/doc/Apes/Controller.html +1100 -0
- data/doc/Apes/Errors.html +125 -0
- data/doc/Apes/Errors/AuthenticationError.html +133 -0
- data/doc/Apes/Errors/BadRequestError.html +157 -0
- data/doc/Apes/Errors/BaseError.html +320 -0
- data/doc/Apes/Errors/InvalidDataError.html +157 -0
- data/doc/Apes/Errors/MissingDataError.html +157 -0
- data/doc/Apes/Model.html +378 -0
- data/doc/Apes/PaginationCursor.html +2138 -0
- data/doc/Apes/RuntimeConfiguration.html +909 -0
- data/doc/Apes/Serializers.html +125 -0
- data/doc/Apes/Serializers/JSON.html +389 -0
- data/doc/Apes/Serializers/JWT.html +452 -0
- data/doc/Apes/Serializers/List.html +347 -0
- data/doc/Apes/UrlsParser.html +1432 -0
- data/doc/Apes/Validators.html +125 -0
- data/doc/Apes/Validators/BaseValidator.html +278 -0
- data/doc/Apes/Validators/BooleanValidator.html +494 -0
- data/doc/Apes/Validators/EmailValidator.html +350 -0
- data/doc/Apes/Validators/PhoneValidator.html +375 -0
- data/doc/Apes/Validators/ReferenceValidator.html +372 -0
- data/doc/Apes/Validators/TimestampValidator.html +640 -0
- data/doc/Apes/Validators/UuidValidator.html +372 -0
- data/doc/Apes/Validators/ZipCodeValidator.html +372 -0
- data/doc/Apes/Version.html +189 -0
- data/doc/ApplicationController.html +547 -0
- data/doc/Concerns.html +128 -0
- data/doc/Concerns/ErrorHandling.html +826 -0
- data/doc/Concerns/PaginationHandling.html +463 -0
- data/doc/Concerns/RequestHandling.html +512 -0
- data/doc/Concerns/ResponseHandling.html +579 -0
- data/doc/Errors.html +126 -0
- data/doc/Errors/AuthenticationError.html +123 -0
- data/doc/Errors/BadRequestError.html +147 -0
- data/doc/Errors/BaseError.html +289 -0
- data/doc/Errors/InvalidDataError.html +147 -0
- data/doc/Errors/MissingDataError.html +147 -0
- data/doc/Model.html +315 -0
- data/doc/PaginationCursor.html +764 -0
- data/doc/Serializers.html +126 -0
- data/doc/Serializers/JSON.html +253 -0
- data/doc/Serializers/JWT.html +253 -0
- data/doc/Serializers/List.html +245 -0
- data/doc/Validators.html +126 -0
- data/doc/Validators/BaseValidator.html +209 -0
- data/doc/Validators/BooleanValidator.html +391 -0
- data/doc/Validators/EmailValidator.html +298 -0
- data/doc/Validators/PhoneValidator.html +313 -0
- data/doc/Validators/ReferenceValidator.html +284 -0
- data/doc/Validators/TimestampValidator.html +476 -0
- data/doc/Validators/UuidValidator.html +310 -0
- data/doc/Validators/ZipCodeValidator.html +310 -0
- data/doc/_index.html +435 -0
- data/doc/class_list.html +58 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +339 -0
- data/doc/file.README.html +252 -0
- data/doc/file_list.html +60 -0
- data/doc/frames.html +26 -0
- data/doc/index.html +252 -0
- data/doc/js/app.js +219 -0
- data/doc/js/full_list.js +181 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +615 -0
- data/doc/top-level-namespace.html +112 -0
- data/lib/apes.rb +40 -0
- data/lib/apes/concerns/errors.rb +111 -0
- data/lib/apes/concerns/pagination.rb +81 -0
- data/lib/apes/concerns/request.rb +237 -0
- data/lib/apes/concerns/response.rb +74 -0
- data/lib/apes/controller.rb +77 -0
- data/lib/apes/errors.rb +38 -0
- data/lib/apes/model.rb +94 -0
- data/lib/apes/pagination_cursor.rb +152 -0
- data/lib/apes/runtime_configuration.rb +80 -0
- data/lib/apes/serializers.rb +88 -0
- data/lib/apes/urls_parser.rb +233 -0
- data/lib/apes/validators.rb +234 -0
- data/lib/apes/version.rb +24 -0
- data/spec/apes/concerns/errors_spec.rb +141 -0
- data/spec/apes/concerns/pagination_spec.rb +114 -0
- data/spec/apes/concerns/request_spec.rb +244 -0
- data/spec/apes/concerns/response_spec.rb +79 -0
- data/spec/apes/controller_spec.rb +54 -0
- data/spec/apes/errors_spec.rb +14 -0
- data/spec/apes/models_spec.rb +148 -0
- data/spec/apes/pagination_cursor_spec.rb +113 -0
- data/spec/apes/runtime_configuration_spec.rb +100 -0
- data/spec/apes/serializers_spec.rb +70 -0
- data/spec/apes/urls_parser_spec.rb +150 -0
- data/spec/apes/validators_spec.rb +237 -0
- data/spec/spec_helper.rb +30 -0
- data/views/_included.json.jbuilder +9 -0
- data/views/_pagination.json.jbuilder +9 -0
- data/views/collection.json.jbuilder +4 -0
- data/views/errors/400.json.jbuilder +9 -0
- data/views/errors/403.json.jbuilder +7 -0
- data/views/errors/404.json.jbuilder +6 -0
- data/views/errors/422.json.jbuilder +19 -0
- data/views/errors/500.json.jbuilder +12 -0
- data/views/errors/501.json.jbuilder +7 -0
- data/views/layouts/general.json.jbuilder +36 -0
- data/views/object.json.jbuilder +4 -0
- metadata +262 -0
|
@@ -0,0 +1,2138 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
6
|
+
<title>
|
|
7
|
+
Class: Apes::PaginationCursor
|
|
8
|
+
|
|
9
|
+
— Documentation by YARD 0.8.7.6
|
|
10
|
+
|
|
11
|
+
</title>
|
|
12
|
+
|
|
13
|
+
<link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
|
|
14
|
+
|
|
15
|
+
<link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
|
|
16
|
+
|
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
|
18
|
+
hasFrames = window.top.frames.main ? true : false;
|
|
19
|
+
relpath = '../';
|
|
20
|
+
framesUrl = "../frames.html#!Apes/PaginationCursor.html";
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
|
|
25
|
+
|
|
26
|
+
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
</head>
|
|
30
|
+
<body>
|
|
31
|
+
<div id="header">
|
|
32
|
+
<div id="menu">
|
|
33
|
+
|
|
34
|
+
<a href="../_index.html">Index (P)</a> »
|
|
35
|
+
<span class='title'><span class='object_link'><a href="../Apes.html" title="Apes (module)">Apes</a></span></span>
|
|
36
|
+
»
|
|
37
|
+
<span class="title">PaginationCursor</span>
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<div id="search">
|
|
44
|
+
|
|
45
|
+
<a class="full_list_link" id="class_list_link"
|
|
46
|
+
href="../class_list.html">
|
|
47
|
+
Class List
|
|
48
|
+
</a>
|
|
49
|
+
|
|
50
|
+
<a class="full_list_link" id="method_list_link"
|
|
51
|
+
href="../method_list.html">
|
|
52
|
+
Method List
|
|
53
|
+
</a>
|
|
54
|
+
|
|
55
|
+
<a class="full_list_link" id="file_list_link"
|
|
56
|
+
href="../file_list.html">
|
|
57
|
+
File List
|
|
58
|
+
</a>
|
|
59
|
+
|
|
60
|
+
</div>
|
|
61
|
+
<div class="clear"></div>
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
<iframe id="search_frame"></iframe>
|
|
65
|
+
|
|
66
|
+
<div id="content"><h1>Class: Apes::PaginationCursor
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
</h1>
|
|
71
|
+
|
|
72
|
+
<dl class="box">
|
|
73
|
+
|
|
74
|
+
<dt class="r1">Inherits:</dt>
|
|
75
|
+
<dd class="r1">
|
|
76
|
+
<span class="inheritName">Object</span>
|
|
77
|
+
|
|
78
|
+
<ul class="fullTree">
|
|
79
|
+
<li>Object</li>
|
|
80
|
+
|
|
81
|
+
<li class="next">Apes::PaginationCursor</li>
|
|
82
|
+
|
|
83
|
+
</ul>
|
|
84
|
+
<a href="#" class="inheritanceTree">show all</a>
|
|
85
|
+
|
|
86
|
+
</dd>
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
<dt class="r2 last">Defined in:</dt>
|
|
97
|
+
<dd class="r2 last">lib/apes/pagination_cursor.rb</dd>
|
|
98
|
+
|
|
99
|
+
</dl>
|
|
100
|
+
<div class="clear"></div>
|
|
101
|
+
|
|
102
|
+
<h2>Overview</h2><div class="docstring">
|
|
103
|
+
<div class="discussion">
|
|
104
|
+
<p>A cursor that can be sent to the client, received unmodified and retrieved later to paginate results.</p>
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
<div class="tags">
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
</div>
|
|
113
|
+
<h2>Constant Summary</h2>
|
|
114
|
+
|
|
115
|
+
<dl class="constants">
|
|
116
|
+
|
|
117
|
+
<dt id="DEFAULT_SIZE-constant" class="">DEFAULT_SIZE =
|
|
118
|
+
<div class="docstring">
|
|
119
|
+
<div class="discussion">
|
|
120
|
+
<p>The default size of a pagination page.</p>
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
<div class="tags">
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
</div>
|
|
129
|
+
</dt>
|
|
130
|
+
<dd><pre class="code"><span class='int'>25</span></pre></dd>
|
|
131
|
+
|
|
132
|
+
<dt id="TIMESTAMP_FORMAT-constant" class="">TIMESTAMP_FORMAT =
|
|
133
|
+
<div class="docstring">
|
|
134
|
+
<div class="discussion">
|
|
135
|
+
<p>Format to serialize timestamp when using them for pagination.</p>
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
<div class="tags">
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
</div>
|
|
144
|
+
</dt>
|
|
145
|
+
<dd><pre class="code"><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>%FT%T.%6N%z</span><span class='tstring_end'>"</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
|
|
146
|
+
|
|
147
|
+
</dl>
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
<h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
|
|
154
|
+
<ul class="summary">
|
|
155
|
+
|
|
156
|
+
<li class="public ">
|
|
157
|
+
<span class="summary_signature">
|
|
158
|
+
|
|
159
|
+
<a href="#direction-instance_method" title="#direction (instance method)">- (IO|String) <strong>direction</strong> </a>
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
</span>
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
<span class="summary_desc"><div class='inline'><p>Which page to get in this iteration.</p>
|
|
177
|
+
</div></span>
|
|
178
|
+
|
|
179
|
+
</li>
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
<li class="public ">
|
|
183
|
+
<span class="summary_signature">
|
|
184
|
+
|
|
185
|
+
<a href="#size-instance_method" title="#size (instance method)">- (IO|String) <strong>size</strong> </a>
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
</span>
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
<span class="summary_desc"><div class='inline'><p>The size of the pagination page.</p>
|
|
203
|
+
</div></span>
|
|
204
|
+
|
|
205
|
+
</li>
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
<li class="public ">
|
|
209
|
+
<span class="summary_signature">
|
|
210
|
+
|
|
211
|
+
<a href="#use_offset-instance_method" title="#use_offset (instance method)">- (Boolean) <strong>use_offset</strong> </a>
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
</span>
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
<span class="summary_desc"><div class='inline'><p>Whether to use offset based pagination rather than collection fields values.</p>
|
|
229
|
+
</div></span>
|
|
230
|
+
|
|
231
|
+
</li>
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
<li class="public ">
|
|
235
|
+
<span class="summary_signature">
|
|
236
|
+
|
|
237
|
+
<a href="#value-instance_method" title="#value (instance method)">- (String) <strong>value</strong> </a>
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
</span>
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
<span class="summary_desc"><div class='inline'><p>The value obtain from previous pagination.</p>
|
|
255
|
+
</div></span>
|
|
256
|
+
|
|
257
|
+
</li>
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
</ul>
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
<h2>
|
|
267
|
+
Instance Method Summary
|
|
268
|
+
<small>(<a href="#" class="summary_toggle">collapse</a>)</small>
|
|
269
|
+
</h2>
|
|
270
|
+
|
|
271
|
+
<ul class="summary">
|
|
272
|
+
|
|
273
|
+
<li class="public ">
|
|
274
|
+
<span class="summary_signature">
|
|
275
|
+
|
|
276
|
+
<a href="#initialize-instance_method" title="#initialize (instance method)">- (Apes::PaginationCursor) <strong>initialize</strong>(params = {}, field = :page, count_field = :count) </a>
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
</span>
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
<span class="note title constructor">constructor</span>
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
<span class="summary_desc"><div class='inline'><p>Creates a new cursor.</p>
|
|
293
|
+
</div></span>
|
|
294
|
+
|
|
295
|
+
</li>
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
<li class="public ">
|
|
299
|
+
<span class="summary_signature">
|
|
300
|
+
|
|
301
|
+
<a href="#might_exist%3F-instance_method" title="#might_exist? (instance method)">- (Boolean) <strong>might_exist?</strong>(page, collection) </a>
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
</span>
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
<span class="summary_desc"><div class='inline'><p>Verifies whether a specific page might exist for the given collection.</p>
|
|
316
|
+
</div></span>
|
|
317
|
+
|
|
318
|
+
</li>
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
<li class="public ">
|
|
322
|
+
<span class="summary_signature">
|
|
323
|
+
|
|
324
|
+
<a href="#operator-instance_method" title="#operator (instance method)">- (String) <strong>operator</strong>(order) </a>
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
</span>
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
<span class="summary_desc"><div class='inline'><p>Get the operator (<code>></code> or <code><</code>) for the query according to the direction and the provided ordering.</p>
|
|
339
|
+
</div></span>
|
|
340
|
+
|
|
341
|
+
</li>
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
<li class="public ">
|
|
345
|
+
<span class="summary_signature">
|
|
346
|
+
|
|
347
|
+
<a href="#save-instance_method" title="#save (instance method)">- (String) <strong>save</strong>(collection, page, field: :id, size: nil, use_offset: nil) </a>
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
(also: #serialize)
|
|
352
|
+
|
|
353
|
+
</span>
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
<span class="summary_desc"><div class='inline'><p>Serializes the cursor to send it to the client.</p>
|
|
364
|
+
</div></span>
|
|
365
|
+
|
|
366
|
+
</li>
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
</ul>
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
<div id="constructor_details" class="method_details_list">
|
|
373
|
+
<h2>Constructor Details</h2>
|
|
374
|
+
|
|
375
|
+
<div class="method_details first">
|
|
376
|
+
<h3 class="signature first" id="initialize-instance_method">
|
|
377
|
+
|
|
378
|
+
- (<tt><span class='object_link'><a href="" title="Apes::PaginationCursor (class)">Apes::PaginationCursor</a></span></tt>) <strong>initialize</strong>(params = {}, field = :page, count_field = :count)
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
</h3><div class="docstring">
|
|
385
|
+
<div class="discussion">
|
|
386
|
+
<p>Creates a new cursor.</p>
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
</div>
|
|
390
|
+
</div>
|
|
391
|
+
<div class="tags">
|
|
392
|
+
<p class="tag_title">Parameters:</p>
|
|
393
|
+
<ul class="param">
|
|
394
|
+
|
|
395
|
+
<li>
|
|
396
|
+
|
|
397
|
+
<span class='name'>params</span>
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
<em class="default">(defaults to: <tt>{}</tt>)</em>
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
—
|
|
407
|
+
<div class='inline'><p>The request parameters.</p>
|
|
408
|
+
</div>
|
|
409
|
+
|
|
410
|
+
</li>
|
|
411
|
+
|
|
412
|
+
<li>
|
|
413
|
+
|
|
414
|
+
<span class='name'>field</span>
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
<span class='type'>(<tt>Symbol</tt>)</span>
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
<em class="default">(defaults to: <tt>:page</tt>)</em>
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
—
|
|
424
|
+
<div class='inline'><p>The parameters field where to lookup for the serialized cursor.</p>
|
|
425
|
+
</div>
|
|
426
|
+
|
|
427
|
+
</li>
|
|
428
|
+
|
|
429
|
+
<li>
|
|
430
|
+
|
|
431
|
+
<span class='name'>count_field</span>
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
<span class='type'>(<tt>Symbol</tt>)</span>
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
<em class="default">(defaults to: <tt>:count</tt>)</em>
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
—
|
|
441
|
+
<div class='inline'><p>The parameters field where to lookup for the overriding cursor size.</p>
|
|
442
|
+
</div>
|
|
443
|
+
|
|
444
|
+
</li>
|
|
445
|
+
|
|
446
|
+
</ul>
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
</div><table class="source_code">
|
|
450
|
+
<tr>
|
|
451
|
+
<td>
|
|
452
|
+
<pre class="lines">
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
32
|
|
456
|
+
33
|
|
457
|
+
34
|
|
458
|
+
35
|
|
459
|
+
36
|
|
460
|
+
37
|
|
461
|
+
38
|
|
462
|
+
39
|
|
463
|
+
40
|
|
464
|
+
41
|
|
465
|
+
42
|
|
466
|
+
43</pre>
|
|
467
|
+
</td>
|
|
468
|
+
<td>
|
|
469
|
+
<pre class="code"><span class="info file"># File 'lib/apes/pagination_cursor.rb', line 32</span>
|
|
470
|
+
|
|
471
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span> <span class='op'>=</span> <span class='symbol'>:page</span><span class='comma'>,</span> <span class='id identifier rubyid_count_field'>count_field</span> <span class='op'>=</span> <span class='symbol'>:count</span><span class='rparen'>)</span>
|
|
472
|
+
<span class='kw'>begin</span>
|
|
473
|
+
<span class='id identifier rubyid_payload'>payload</span> <span class='op'>=</span> <span class='const'>JWT</span><span class='period'>.</span><span class='id identifier rubyid_decode'>decode</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='lbracket'>[</span><span class='id identifier rubyid_field'>field</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_jwt_secret'>jwt_secret</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='label'>algorithm:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>HS256</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>verify_aud:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>aud:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>pagination</span><span class='tstring_end'>"</span></span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='int'>0</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>sub</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
474
|
+
|
|
475
|
+
<span class='id identifier rubyid_extract_payload'>extract_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_payload'>payload</span><span class='rparen'>)</span>
|
|
476
|
+
<span class='kw'>rescue</span>
|
|
477
|
+
<span class='id identifier rubyid_default_payload'>default_payload</span>
|
|
478
|
+
<span class='kw'>end</span>
|
|
479
|
+
|
|
480
|
+
<span class='comment'># Sanitization
|
|
481
|
+
</span> <span class='id identifier rubyid_sanitize'>sanitize</span><span class='lparen'>(</span><span class='id identifier rubyid_count_field'>count_field</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='rparen'>)</span>
|
|
482
|
+
<span class='kw'>end</span></pre>
|
|
483
|
+
</td>
|
|
484
|
+
</tr>
|
|
485
|
+
</table>
|
|
486
|
+
</div>
|
|
487
|
+
|
|
488
|
+
</div>
|
|
489
|
+
|
|
490
|
+
<div id="instance_attr_details" class="attr_details">
|
|
491
|
+
<h2>Instance Attribute Details</h2>
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
<span id="direction=-instance_method"></span>
|
|
495
|
+
<div class="method_details first">
|
|
496
|
+
<h3 class="signature first" id="direction-instance_method">
|
|
497
|
+
|
|
498
|
+
- (<tt>IO|String</tt>) <strong>direction</strong>
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
</h3><div class="docstring">
|
|
505
|
+
<div class="discussion">
|
|
506
|
+
<p>Returns Which page to get in this iteration.</p>
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
</div>
|
|
510
|
+
</div>
|
|
511
|
+
<div class="tags">
|
|
512
|
+
|
|
513
|
+
<p class="tag_title">Returns:</p>
|
|
514
|
+
<ul class="return">
|
|
515
|
+
|
|
516
|
+
<li>
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
<span class='type'>(<tt>IO|String</tt>)</span>
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
—
|
|
524
|
+
<div class='inline'><p>Which page to get in this iteration.</p>
|
|
525
|
+
</div>
|
|
526
|
+
|
|
527
|
+
</li>
|
|
528
|
+
|
|
529
|
+
</ul>
|
|
530
|
+
|
|
531
|
+
</div><table class="source_code">
|
|
532
|
+
<tr>
|
|
533
|
+
<td>
|
|
534
|
+
<pre class="lines">
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
17
|
|
538
|
+
18
|
|
539
|
+
19
|
|
540
|
+
20
|
|
541
|
+
21
|
|
542
|
+
22
|
|
543
|
+
23
|
|
544
|
+
24
|
|
545
|
+
25
|
|
546
|
+
26
|
|
547
|
+
27
|
|
548
|
+
28
|
|
549
|
+
29
|
|
550
|
+
30
|
|
551
|
+
31
|
|
552
|
+
32
|
|
553
|
+
33
|
|
554
|
+
34
|
|
555
|
+
35
|
|
556
|
+
36
|
|
557
|
+
37
|
|
558
|
+
38
|
|
559
|
+
39
|
|
560
|
+
40
|
|
561
|
+
41
|
|
562
|
+
42
|
|
563
|
+
43
|
|
564
|
+
44
|
|
565
|
+
45
|
|
566
|
+
46
|
|
567
|
+
47
|
|
568
|
+
48
|
|
569
|
+
49
|
|
570
|
+
50
|
|
571
|
+
51
|
|
572
|
+
52
|
|
573
|
+
53
|
|
574
|
+
54
|
|
575
|
+
55
|
|
576
|
+
56
|
|
577
|
+
57
|
|
578
|
+
58
|
|
579
|
+
59
|
|
580
|
+
60
|
|
581
|
+
61
|
|
582
|
+
62
|
|
583
|
+
63
|
|
584
|
+
64
|
|
585
|
+
65
|
|
586
|
+
66
|
|
587
|
+
67
|
|
588
|
+
68
|
|
589
|
+
69
|
|
590
|
+
70
|
|
591
|
+
71
|
|
592
|
+
72
|
|
593
|
+
73
|
|
594
|
+
74
|
|
595
|
+
75
|
|
596
|
+
76
|
|
597
|
+
77
|
|
598
|
+
78
|
|
599
|
+
79
|
|
600
|
+
80
|
|
601
|
+
81
|
|
602
|
+
82
|
|
603
|
+
83
|
|
604
|
+
84
|
|
605
|
+
85
|
|
606
|
+
86
|
|
607
|
+
87
|
|
608
|
+
88
|
|
609
|
+
89
|
|
610
|
+
90
|
|
611
|
+
91
|
|
612
|
+
92
|
|
613
|
+
93
|
|
614
|
+
94
|
|
615
|
+
95
|
|
616
|
+
96
|
|
617
|
+
97
|
|
618
|
+
98
|
|
619
|
+
99
|
|
620
|
+
100
|
|
621
|
+
101
|
|
622
|
+
102
|
|
623
|
+
103
|
|
624
|
+
104
|
|
625
|
+
105
|
|
626
|
+
106
|
|
627
|
+
107
|
|
628
|
+
108
|
|
629
|
+
109
|
|
630
|
+
110
|
|
631
|
+
111
|
|
632
|
+
112
|
|
633
|
+
113
|
|
634
|
+
114
|
|
635
|
+
115
|
|
636
|
+
116
|
|
637
|
+
117
|
|
638
|
+
118
|
|
639
|
+
119
|
|
640
|
+
120
|
|
641
|
+
121
|
|
642
|
+
122
|
|
643
|
+
123
|
|
644
|
+
124
|
|
645
|
+
125
|
|
646
|
+
126
|
|
647
|
+
127
|
|
648
|
+
128
|
|
649
|
+
129
|
|
650
|
+
130
|
|
651
|
+
131
|
|
652
|
+
132
|
|
653
|
+
133
|
|
654
|
+
134
|
|
655
|
+
135
|
|
656
|
+
136
|
|
657
|
+
137
|
|
658
|
+
138
|
|
659
|
+
139
|
|
660
|
+
140
|
|
661
|
+
141
|
|
662
|
+
142
|
|
663
|
+
143
|
|
664
|
+
144
|
|
665
|
+
145
|
|
666
|
+
146
|
|
667
|
+
147
|
|
668
|
+
148
|
|
669
|
+
149
|
|
670
|
+
150
|
|
671
|
+
151</pre>
|
|
672
|
+
</td>
|
|
673
|
+
<td>
|
|
674
|
+
<pre class="code"><span class="info file"># File 'lib/apes/pagination_cursor.rb', line 17</span>
|
|
675
|
+
|
|
676
|
+
<span class='kw'>class</span> <span class='const'>PaginationCursor</span>
|
|
677
|
+
<span class='comment'># The default size of a pagination page.
|
|
678
|
+
</span> <span class='const'>DEFAULT_SIZE</span> <span class='op'>=</span> <span class='int'>25</span>
|
|
679
|
+
|
|
680
|
+
<span class='comment'># Format to serialize timestamp when using them for pagination.
|
|
681
|
+
</span> <span class='const'>TIMESTAMP_FORMAT</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>%FT%T.%6N%z</span><span class='tstring_end'>"</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span>
|
|
682
|
+
|
|
683
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:value</span><span class='comma'>,</span> <span class='symbol'>:use_offset</span><span class='comma'>,</span> <span class='symbol'>:direction</span><span class='comma'>,</span> <span class='symbol'>:size</span>
|
|
684
|
+
|
|
685
|
+
<span class='comment'># Creates a new cursor.
|
|
686
|
+
</span> <span class='comment'>#
|
|
687
|
+
</span> <span class='comment'># @param params [Hash] The request parameters.
|
|
688
|
+
</span> <span class='comment'># @param field [Symbol] The parameters field where to lookup for the serialized cursor.
|
|
689
|
+
</span> <span class='comment'># @param count_field [Symbol] The parameters field where to lookup for the overriding cursor size.
|
|
690
|
+
</span> <span class='comment'># @return [Apes::PaginationCursor] A new cursor instance.
|
|
691
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span> <span class='op'>=</span> <span class='symbol'>:page</span><span class='comma'>,</span> <span class='id identifier rubyid_count_field'>count_field</span> <span class='op'>=</span> <span class='symbol'>:count</span><span class='rparen'>)</span>
|
|
692
|
+
<span class='kw'>begin</span>
|
|
693
|
+
<span class='id identifier rubyid_payload'>payload</span> <span class='op'>=</span> <span class='const'>JWT</span><span class='period'>.</span><span class='id identifier rubyid_decode'>decode</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='lbracket'>[</span><span class='id identifier rubyid_field'>field</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_jwt_secret'>jwt_secret</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='label'>algorithm:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>HS256</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>verify_aud:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>aud:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>pagination</span><span class='tstring_end'>"</span></span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='int'>0</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>sub</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
694
|
+
|
|
695
|
+
<span class='id identifier rubyid_extract_payload'>extract_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_payload'>payload</span><span class='rparen'>)</span>
|
|
696
|
+
<span class='kw'>rescue</span>
|
|
697
|
+
<span class='id identifier rubyid_default_payload'>default_payload</span>
|
|
698
|
+
<span class='kw'>end</span>
|
|
699
|
+
|
|
700
|
+
<span class='comment'># Sanitization
|
|
701
|
+
</span> <span class='id identifier rubyid_sanitize'>sanitize</span><span class='lparen'>(</span><span class='id identifier rubyid_count_field'>count_field</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='rparen'>)</span>
|
|
702
|
+
<span class='kw'>end</span>
|
|
703
|
+
|
|
704
|
+
<span class='comment'># Get the operator (`>` or `<`) for the query according to the direction and the provided ordering.
|
|
705
|
+
</span> <span class='comment'>#
|
|
706
|
+
</span> <span class='comment'># @param order [Symbol] The order to use.
|
|
707
|
+
</span> <span class='comment'># @return [String] The operator to use for the query.
|
|
708
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_operator'>operator</span><span class='lparen'>(</span><span class='id identifier rubyid_order'>order</span><span class='rparen'>)</span>
|
|
709
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_direction'>direction</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
710
|
+
<span class='id identifier rubyid_order'>order</span> <span class='op'>==</span> <span class='symbol'>:asc</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>></span><span class='tstring_end'>"</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'><</span><span class='tstring_end'>"</span></span> <span class='comment'># Descending order means newer results first
|
|
711
|
+
</span> <span class='kw'>else</span>
|
|
712
|
+
<span class='id identifier rubyid_order'>order</span> <span class='op'>==</span> <span class='symbol'>:asc</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'><</span><span class='tstring_end'>"</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>></span><span class='tstring_end'>"</span></span> <span class='comment'># Descending order means newer results first
|
|
713
|
+
</span> <span class='kw'>end</span>
|
|
714
|
+
<span class='kw'>end</span>
|
|
715
|
+
|
|
716
|
+
<span class='comment'># Verifies whether a specific page might exist for the given collection.
|
|
717
|
+
</span> <span class='comment'>#
|
|
718
|
+
</span> <span class='comment'># @param page [String] The page to check. It can be `first`, `next`, `prev` or `previous`.
|
|
719
|
+
</span> <span class='comment'># @param collection [Enumerable] The collection to analyze.
|
|
720
|
+
</span> <span class='comment'># @return [Boolean] Returns `true` if the page might exist for the collection, `false` otherwise.
|
|
721
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_might_exist?'>might_exist?</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='id identifier rubyid_collection'>collection</span><span class='rparen'>)</span>
|
|
722
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_page'>page</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
|
|
723
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>first</span><span class='tstring_end'>"</span></span> <span class='kw'>then</span> <span class='kw'>true</span>
|
|
724
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span> <span class='kw'>then</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
|
725
|
+
<span class='kw'>else</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='op'>&&</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='comment'># Previous
|
|
726
|
+
</span> <span class='kw'>end</span>
|
|
727
|
+
<span class='kw'>end</span>
|
|
728
|
+
|
|
729
|
+
<span class='comment'># Serializes the cursor to send it to the client.
|
|
730
|
+
</span> <span class='comment'>#
|
|
731
|
+
</span> <span class='comment'># @param collection [Enumerable] The collection to analyze.
|
|
732
|
+
</span> <span class='comment'># @param page [String] The page to return. It can be `first`, `next`, `prev` or `previous`.
|
|
733
|
+
</span> <span class='comment'># @param field [Symbol] When not using offset based pagination, the field to consider for generation.
|
|
734
|
+
</span> <span class='comment'># @param size [Fixnum] The number of results to advance when using offset based pagination.
|
|
735
|
+
</span> <span class='comment'># @param use_offset [Boolean] Whether to use offset based pagination.
|
|
736
|
+
</span> <span class='comment'># @return [String] The serialized cursor.
|
|
737
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_save'>save</span><span class='lparen'>(</span><span class='id identifier rubyid_collection'>collection</span><span class='comma'>,</span> <span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='label'>field:</span> <span class='symbol'>:id</span><span class='comma'>,</span> <span class='label'>size:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>use_offset:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
|
738
|
+
<span class='id identifier rubyid_size'>size</span> <span class='op'>||=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span>
|
|
739
|
+
<span class='id identifier rubyid_use_offset'>use_offset</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_use_offset'>use_offset</span> <span class='kw'>if</span> <span class='id identifier rubyid_use_offset'>use_offset</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
|
740
|
+
<span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_use_offset'>use_offset</span> <span class='op'>?</span> <span class='id identifier rubyid_update_with_offset'>update_with_offset</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='id identifier rubyid_size'>size</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_update_with_field'>update_with_field</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='id identifier rubyid_collection'>collection</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
741
|
+
|
|
742
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_strftime'>strftime</span><span class='lparen'>(</span><span class='const'>TIMESTAMP_FORMAT</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:strftime</span><span class='rparen'>)</span>
|
|
743
|
+
|
|
744
|
+
<span class='const'>JWT</span><span class='period'>.</span><span class='id identifier rubyid_encode'>encode</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='label'>aud:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>pagination</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>sub:</span> <span class='lbrace'>{</span><span class='label'>value:</span> <span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='label'>use_offset:</span> <span class='id identifier rubyid_use_offset'>use_offset</span><span class='comma'>,</span> <span class='label'>direction:</span> <span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='label'>size:</span> <span class='id identifier rubyid_size'>size</span><span class='rbrace'>}</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_jwt_secret'>jwt_secret</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>HS256</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
745
|
+
<span class='kw'>end</span>
|
|
746
|
+
<span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:serialize</span><span class='comma'>,</span> <span class='symbol'>:save</span>
|
|
747
|
+
|
|
748
|
+
<span class='id identifier rubyid_private'>private</span>
|
|
749
|
+
|
|
750
|
+
<span class='comment'># :nodoc:
|
|
751
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_default_payload'>default_payload</span>
|
|
752
|
+
<span class='ivar'>@value</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
|
753
|
+
<span class='ivar'>@direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
754
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='int'>0</span>
|
|
755
|
+
<span class='ivar'>@use_offset</span> <span class='op'>=</span> <span class='kw'>false</span>
|
|
756
|
+
<span class='kw'>end</span>
|
|
757
|
+
|
|
758
|
+
<span class='comment'># :nodoc:
|
|
759
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_extract_payload'>extract_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_payload'>payload</span><span class='rparen'>)</span>
|
|
760
|
+
<span class='ivar'>@value</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>value</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
761
|
+
<span class='ivar'>@direction</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>direction</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
762
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>size</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
763
|
+
<span class='ivar'>@use_offset</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>use_offset</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
764
|
+
<span class='kw'>end</span>
|
|
765
|
+
|
|
766
|
+
<span class='comment'># :nodoc:
|
|
767
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_sanitize'>sanitize</span><span class='lparen'>(</span><span class='id identifier rubyid_count_field'>count_field</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='rparen'>)</span>
|
|
768
|
+
<span class='ivar'>@direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span> <span class='kw'>unless</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>prev</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='ivar'>@direction</span><span class='rparen'>)</span>
|
|
769
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='id identifier rubyid_params'>params</span><span class='lbracket'>[</span><span class='id identifier rubyid_count_field'>count_field</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span> <span class='kw'>if</span> <span class='id identifier rubyid_params'>params</span><span class='lbracket'>[</span><span class='id identifier rubyid_count_field'>count_field</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
|
770
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='const'>DEFAULT_SIZE</span> <span class='kw'>if</span> <span class='ivar'>@size</span> <span class='op'><</span> <span class='int'>1</span>
|
|
771
|
+
<span class='kw'>end</span>
|
|
772
|
+
|
|
773
|
+
<span class='comment'># :nodoc:
|
|
774
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_update_with_field'>update_with_field</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_collection'>collection</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
775
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_type'>type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
|
|
776
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
777
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
778
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='op'>&.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
779
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>prev</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
780
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
781
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='op'>&.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
782
|
+
<span class='kw'>else</span> <span class='comment'># first
|
|
783
|
+
</span> <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
784
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
|
785
|
+
<span class='kw'>end</span>
|
|
786
|
+
|
|
787
|
+
<span class='lbracket'>[</span><span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
|
|
788
|
+
<span class='kw'>end</span>
|
|
789
|
+
|
|
790
|
+
<span class='comment'># :nodoc:
|
|
791
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_update_with_offset'>update_with_offset</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_size'>size</span><span class='rparen'>)</span>
|
|
792
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_type'>type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
|
|
793
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
794
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
795
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='op'>+</span> <span class='id identifier rubyid_size'>size</span>
|
|
796
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>prev</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
797
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
798
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='int'>0</span><span class='comma'>,</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='op'>-</span> <span class='id identifier rubyid_size'>size</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span>
|
|
799
|
+
<span class='kw'>else</span> <span class='comment'># first
|
|
800
|
+
</span> <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
801
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
|
802
|
+
<span class='kw'>end</span>
|
|
803
|
+
|
|
804
|
+
<span class='lbracket'>[</span><span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
|
|
805
|
+
<span class='kw'>end</span>
|
|
806
|
+
|
|
807
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_jwt_secret'>jwt_secret</span>
|
|
808
|
+
<span class='const'>Apes</span><span class='op'>::</span><span class='const'>RuntimeConfiguration</span><span class='period'>.</span><span class='id identifier rubyid_jwt_token'>jwt_token</span>
|
|
809
|
+
<span class='kw'>end</span>
|
|
810
|
+
<span class='kw'>end</span></pre>
|
|
811
|
+
</td>
|
|
812
|
+
</tr>
|
|
813
|
+
</table>
|
|
814
|
+
</div>
|
|
815
|
+
|
|
816
|
+
|
|
817
|
+
<span id="size=-instance_method"></span>
|
|
818
|
+
<div class="method_details ">
|
|
819
|
+
<h3 class="signature " id="size-instance_method">
|
|
820
|
+
|
|
821
|
+
- (<tt>IO|String</tt>) <strong>size</strong>
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
|
|
827
|
+
</h3><div class="docstring">
|
|
828
|
+
<div class="discussion">
|
|
829
|
+
<p>Returns The size of the pagination page.</p>
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
</div>
|
|
833
|
+
</div>
|
|
834
|
+
<div class="tags">
|
|
835
|
+
|
|
836
|
+
<p class="tag_title">Returns:</p>
|
|
837
|
+
<ul class="return">
|
|
838
|
+
|
|
839
|
+
<li>
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
<span class='type'>(<tt>IO|String</tt>)</span>
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
|
|
846
|
+
—
|
|
847
|
+
<div class='inline'><p>The size of the pagination page.</p>
|
|
848
|
+
</div>
|
|
849
|
+
|
|
850
|
+
</li>
|
|
851
|
+
|
|
852
|
+
</ul>
|
|
853
|
+
|
|
854
|
+
</div><table class="source_code">
|
|
855
|
+
<tr>
|
|
856
|
+
<td>
|
|
857
|
+
<pre class="lines">
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
17
|
|
861
|
+
18
|
|
862
|
+
19
|
|
863
|
+
20
|
|
864
|
+
21
|
|
865
|
+
22
|
|
866
|
+
23
|
|
867
|
+
24
|
|
868
|
+
25
|
|
869
|
+
26
|
|
870
|
+
27
|
|
871
|
+
28
|
|
872
|
+
29
|
|
873
|
+
30
|
|
874
|
+
31
|
|
875
|
+
32
|
|
876
|
+
33
|
|
877
|
+
34
|
|
878
|
+
35
|
|
879
|
+
36
|
|
880
|
+
37
|
|
881
|
+
38
|
|
882
|
+
39
|
|
883
|
+
40
|
|
884
|
+
41
|
|
885
|
+
42
|
|
886
|
+
43
|
|
887
|
+
44
|
|
888
|
+
45
|
|
889
|
+
46
|
|
890
|
+
47
|
|
891
|
+
48
|
|
892
|
+
49
|
|
893
|
+
50
|
|
894
|
+
51
|
|
895
|
+
52
|
|
896
|
+
53
|
|
897
|
+
54
|
|
898
|
+
55
|
|
899
|
+
56
|
|
900
|
+
57
|
|
901
|
+
58
|
|
902
|
+
59
|
|
903
|
+
60
|
|
904
|
+
61
|
|
905
|
+
62
|
|
906
|
+
63
|
|
907
|
+
64
|
|
908
|
+
65
|
|
909
|
+
66
|
|
910
|
+
67
|
|
911
|
+
68
|
|
912
|
+
69
|
|
913
|
+
70
|
|
914
|
+
71
|
|
915
|
+
72
|
|
916
|
+
73
|
|
917
|
+
74
|
|
918
|
+
75
|
|
919
|
+
76
|
|
920
|
+
77
|
|
921
|
+
78
|
|
922
|
+
79
|
|
923
|
+
80
|
|
924
|
+
81
|
|
925
|
+
82
|
|
926
|
+
83
|
|
927
|
+
84
|
|
928
|
+
85
|
|
929
|
+
86
|
|
930
|
+
87
|
|
931
|
+
88
|
|
932
|
+
89
|
|
933
|
+
90
|
|
934
|
+
91
|
|
935
|
+
92
|
|
936
|
+
93
|
|
937
|
+
94
|
|
938
|
+
95
|
|
939
|
+
96
|
|
940
|
+
97
|
|
941
|
+
98
|
|
942
|
+
99
|
|
943
|
+
100
|
|
944
|
+
101
|
|
945
|
+
102
|
|
946
|
+
103
|
|
947
|
+
104
|
|
948
|
+
105
|
|
949
|
+
106
|
|
950
|
+
107
|
|
951
|
+
108
|
|
952
|
+
109
|
|
953
|
+
110
|
|
954
|
+
111
|
|
955
|
+
112
|
|
956
|
+
113
|
|
957
|
+
114
|
|
958
|
+
115
|
|
959
|
+
116
|
|
960
|
+
117
|
|
961
|
+
118
|
|
962
|
+
119
|
|
963
|
+
120
|
|
964
|
+
121
|
|
965
|
+
122
|
|
966
|
+
123
|
|
967
|
+
124
|
|
968
|
+
125
|
|
969
|
+
126
|
|
970
|
+
127
|
|
971
|
+
128
|
|
972
|
+
129
|
|
973
|
+
130
|
|
974
|
+
131
|
|
975
|
+
132
|
|
976
|
+
133
|
|
977
|
+
134
|
|
978
|
+
135
|
|
979
|
+
136
|
|
980
|
+
137
|
|
981
|
+
138
|
|
982
|
+
139
|
|
983
|
+
140
|
|
984
|
+
141
|
|
985
|
+
142
|
|
986
|
+
143
|
|
987
|
+
144
|
|
988
|
+
145
|
|
989
|
+
146
|
|
990
|
+
147
|
|
991
|
+
148
|
|
992
|
+
149
|
|
993
|
+
150
|
|
994
|
+
151</pre>
|
|
995
|
+
</td>
|
|
996
|
+
<td>
|
|
997
|
+
<pre class="code"><span class="info file"># File 'lib/apes/pagination_cursor.rb', line 17</span>
|
|
998
|
+
|
|
999
|
+
<span class='kw'>class</span> <span class='const'>PaginationCursor</span>
|
|
1000
|
+
<span class='comment'># The default size of a pagination page.
|
|
1001
|
+
</span> <span class='const'>DEFAULT_SIZE</span> <span class='op'>=</span> <span class='int'>25</span>
|
|
1002
|
+
|
|
1003
|
+
<span class='comment'># Format to serialize timestamp when using them for pagination.
|
|
1004
|
+
</span> <span class='const'>TIMESTAMP_FORMAT</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>%FT%T.%6N%z</span><span class='tstring_end'>"</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span>
|
|
1005
|
+
|
|
1006
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:value</span><span class='comma'>,</span> <span class='symbol'>:use_offset</span><span class='comma'>,</span> <span class='symbol'>:direction</span><span class='comma'>,</span> <span class='symbol'>:size</span>
|
|
1007
|
+
|
|
1008
|
+
<span class='comment'># Creates a new cursor.
|
|
1009
|
+
</span> <span class='comment'>#
|
|
1010
|
+
</span> <span class='comment'># @param params [Hash] The request parameters.
|
|
1011
|
+
</span> <span class='comment'># @param field [Symbol] The parameters field where to lookup for the serialized cursor.
|
|
1012
|
+
</span> <span class='comment'># @param count_field [Symbol] The parameters field where to lookup for the overriding cursor size.
|
|
1013
|
+
</span> <span class='comment'># @return [Apes::PaginationCursor] A new cursor instance.
|
|
1014
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span> <span class='op'>=</span> <span class='symbol'>:page</span><span class='comma'>,</span> <span class='id identifier rubyid_count_field'>count_field</span> <span class='op'>=</span> <span class='symbol'>:count</span><span class='rparen'>)</span>
|
|
1015
|
+
<span class='kw'>begin</span>
|
|
1016
|
+
<span class='id identifier rubyid_payload'>payload</span> <span class='op'>=</span> <span class='const'>JWT</span><span class='period'>.</span><span class='id identifier rubyid_decode'>decode</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='lbracket'>[</span><span class='id identifier rubyid_field'>field</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_jwt_secret'>jwt_secret</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='label'>algorithm:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>HS256</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>verify_aud:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>aud:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>pagination</span><span class='tstring_end'>"</span></span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='int'>0</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>sub</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
1017
|
+
|
|
1018
|
+
<span class='id identifier rubyid_extract_payload'>extract_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_payload'>payload</span><span class='rparen'>)</span>
|
|
1019
|
+
<span class='kw'>rescue</span>
|
|
1020
|
+
<span class='id identifier rubyid_default_payload'>default_payload</span>
|
|
1021
|
+
<span class='kw'>end</span>
|
|
1022
|
+
|
|
1023
|
+
<span class='comment'># Sanitization
|
|
1024
|
+
</span> <span class='id identifier rubyid_sanitize'>sanitize</span><span class='lparen'>(</span><span class='id identifier rubyid_count_field'>count_field</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='rparen'>)</span>
|
|
1025
|
+
<span class='kw'>end</span>
|
|
1026
|
+
|
|
1027
|
+
<span class='comment'># Get the operator (`>` or `<`) for the query according to the direction and the provided ordering.
|
|
1028
|
+
</span> <span class='comment'>#
|
|
1029
|
+
</span> <span class='comment'># @param order [Symbol] The order to use.
|
|
1030
|
+
</span> <span class='comment'># @return [String] The operator to use for the query.
|
|
1031
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_operator'>operator</span><span class='lparen'>(</span><span class='id identifier rubyid_order'>order</span><span class='rparen'>)</span>
|
|
1032
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_direction'>direction</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1033
|
+
<span class='id identifier rubyid_order'>order</span> <span class='op'>==</span> <span class='symbol'>:asc</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>></span><span class='tstring_end'>"</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'><</span><span class='tstring_end'>"</span></span> <span class='comment'># Descending order means newer results first
|
|
1034
|
+
</span> <span class='kw'>else</span>
|
|
1035
|
+
<span class='id identifier rubyid_order'>order</span> <span class='op'>==</span> <span class='symbol'>:asc</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'><</span><span class='tstring_end'>"</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>></span><span class='tstring_end'>"</span></span> <span class='comment'># Descending order means newer results first
|
|
1036
|
+
</span> <span class='kw'>end</span>
|
|
1037
|
+
<span class='kw'>end</span>
|
|
1038
|
+
|
|
1039
|
+
<span class='comment'># Verifies whether a specific page might exist for the given collection.
|
|
1040
|
+
</span> <span class='comment'>#
|
|
1041
|
+
</span> <span class='comment'># @param page [String] The page to check. It can be `first`, `next`, `prev` or `previous`.
|
|
1042
|
+
</span> <span class='comment'># @param collection [Enumerable] The collection to analyze.
|
|
1043
|
+
</span> <span class='comment'># @return [Boolean] Returns `true` if the page might exist for the collection, `false` otherwise.
|
|
1044
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_might_exist?'>might_exist?</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='id identifier rubyid_collection'>collection</span><span class='rparen'>)</span>
|
|
1045
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_page'>page</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
|
|
1046
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>first</span><span class='tstring_end'>"</span></span> <span class='kw'>then</span> <span class='kw'>true</span>
|
|
1047
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span> <span class='kw'>then</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
|
1048
|
+
<span class='kw'>else</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='op'>&&</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='comment'># Previous
|
|
1049
|
+
</span> <span class='kw'>end</span>
|
|
1050
|
+
<span class='kw'>end</span>
|
|
1051
|
+
|
|
1052
|
+
<span class='comment'># Serializes the cursor to send it to the client.
|
|
1053
|
+
</span> <span class='comment'>#
|
|
1054
|
+
</span> <span class='comment'># @param collection [Enumerable] The collection to analyze.
|
|
1055
|
+
</span> <span class='comment'># @param page [String] The page to return. It can be `first`, `next`, `prev` or `previous`.
|
|
1056
|
+
</span> <span class='comment'># @param field [Symbol] When not using offset based pagination, the field to consider for generation.
|
|
1057
|
+
</span> <span class='comment'># @param size [Fixnum] The number of results to advance when using offset based pagination.
|
|
1058
|
+
</span> <span class='comment'># @param use_offset [Boolean] Whether to use offset based pagination.
|
|
1059
|
+
</span> <span class='comment'># @return [String] The serialized cursor.
|
|
1060
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_save'>save</span><span class='lparen'>(</span><span class='id identifier rubyid_collection'>collection</span><span class='comma'>,</span> <span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='label'>field:</span> <span class='symbol'>:id</span><span class='comma'>,</span> <span class='label'>size:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>use_offset:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
|
1061
|
+
<span class='id identifier rubyid_size'>size</span> <span class='op'>||=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span>
|
|
1062
|
+
<span class='id identifier rubyid_use_offset'>use_offset</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_use_offset'>use_offset</span> <span class='kw'>if</span> <span class='id identifier rubyid_use_offset'>use_offset</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
|
1063
|
+
<span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_use_offset'>use_offset</span> <span class='op'>?</span> <span class='id identifier rubyid_update_with_offset'>update_with_offset</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='id identifier rubyid_size'>size</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_update_with_field'>update_with_field</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='id identifier rubyid_collection'>collection</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
1064
|
+
|
|
1065
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_strftime'>strftime</span><span class='lparen'>(</span><span class='const'>TIMESTAMP_FORMAT</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:strftime</span><span class='rparen'>)</span>
|
|
1066
|
+
|
|
1067
|
+
<span class='const'>JWT</span><span class='period'>.</span><span class='id identifier rubyid_encode'>encode</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='label'>aud:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>pagination</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>sub:</span> <span class='lbrace'>{</span><span class='label'>value:</span> <span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='label'>use_offset:</span> <span class='id identifier rubyid_use_offset'>use_offset</span><span class='comma'>,</span> <span class='label'>direction:</span> <span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='label'>size:</span> <span class='id identifier rubyid_size'>size</span><span class='rbrace'>}</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_jwt_secret'>jwt_secret</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>HS256</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
1068
|
+
<span class='kw'>end</span>
|
|
1069
|
+
<span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:serialize</span><span class='comma'>,</span> <span class='symbol'>:save</span>
|
|
1070
|
+
|
|
1071
|
+
<span class='id identifier rubyid_private'>private</span>
|
|
1072
|
+
|
|
1073
|
+
<span class='comment'># :nodoc:
|
|
1074
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_default_payload'>default_payload</span>
|
|
1075
|
+
<span class='ivar'>@value</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
|
1076
|
+
<span class='ivar'>@direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1077
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='int'>0</span>
|
|
1078
|
+
<span class='ivar'>@use_offset</span> <span class='op'>=</span> <span class='kw'>false</span>
|
|
1079
|
+
<span class='kw'>end</span>
|
|
1080
|
+
|
|
1081
|
+
<span class='comment'># :nodoc:
|
|
1082
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_extract_payload'>extract_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_payload'>payload</span><span class='rparen'>)</span>
|
|
1083
|
+
<span class='ivar'>@value</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>value</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
1084
|
+
<span class='ivar'>@direction</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>direction</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
1085
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>size</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
1086
|
+
<span class='ivar'>@use_offset</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>use_offset</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
1087
|
+
<span class='kw'>end</span>
|
|
1088
|
+
|
|
1089
|
+
<span class='comment'># :nodoc:
|
|
1090
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_sanitize'>sanitize</span><span class='lparen'>(</span><span class='id identifier rubyid_count_field'>count_field</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='rparen'>)</span>
|
|
1091
|
+
<span class='ivar'>@direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span> <span class='kw'>unless</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>prev</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='ivar'>@direction</span><span class='rparen'>)</span>
|
|
1092
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='id identifier rubyid_params'>params</span><span class='lbracket'>[</span><span class='id identifier rubyid_count_field'>count_field</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span> <span class='kw'>if</span> <span class='id identifier rubyid_params'>params</span><span class='lbracket'>[</span><span class='id identifier rubyid_count_field'>count_field</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
|
1093
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='const'>DEFAULT_SIZE</span> <span class='kw'>if</span> <span class='ivar'>@size</span> <span class='op'><</span> <span class='int'>1</span>
|
|
1094
|
+
<span class='kw'>end</span>
|
|
1095
|
+
|
|
1096
|
+
<span class='comment'># :nodoc:
|
|
1097
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_update_with_field'>update_with_field</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_collection'>collection</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
1098
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_type'>type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
|
|
1099
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1100
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1101
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='op'>&.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
1102
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>prev</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
1103
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
1104
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='op'>&.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
1105
|
+
<span class='kw'>else</span> <span class='comment'># first
|
|
1106
|
+
</span> <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1107
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
|
1108
|
+
<span class='kw'>end</span>
|
|
1109
|
+
|
|
1110
|
+
<span class='lbracket'>[</span><span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
|
|
1111
|
+
<span class='kw'>end</span>
|
|
1112
|
+
|
|
1113
|
+
<span class='comment'># :nodoc:
|
|
1114
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_update_with_offset'>update_with_offset</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_size'>size</span><span class='rparen'>)</span>
|
|
1115
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_type'>type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
|
|
1116
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1117
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1118
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='op'>+</span> <span class='id identifier rubyid_size'>size</span>
|
|
1119
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>prev</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
1120
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
1121
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='int'>0</span><span class='comma'>,</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='op'>-</span> <span class='id identifier rubyid_size'>size</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span>
|
|
1122
|
+
<span class='kw'>else</span> <span class='comment'># first
|
|
1123
|
+
</span> <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1124
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
|
1125
|
+
<span class='kw'>end</span>
|
|
1126
|
+
|
|
1127
|
+
<span class='lbracket'>[</span><span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
|
|
1128
|
+
<span class='kw'>end</span>
|
|
1129
|
+
|
|
1130
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_jwt_secret'>jwt_secret</span>
|
|
1131
|
+
<span class='const'>Apes</span><span class='op'>::</span><span class='const'>RuntimeConfiguration</span><span class='period'>.</span><span class='id identifier rubyid_jwt_token'>jwt_token</span>
|
|
1132
|
+
<span class='kw'>end</span>
|
|
1133
|
+
<span class='kw'>end</span></pre>
|
|
1134
|
+
</td>
|
|
1135
|
+
</tr>
|
|
1136
|
+
</table>
|
|
1137
|
+
</div>
|
|
1138
|
+
|
|
1139
|
+
|
|
1140
|
+
<span id="use_offset=-instance_method"></span>
|
|
1141
|
+
<div class="method_details ">
|
|
1142
|
+
<h3 class="signature " id="use_offset-instance_method">
|
|
1143
|
+
|
|
1144
|
+
- (<tt>Boolean</tt>) <strong>use_offset</strong>
|
|
1145
|
+
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
|
|
1149
|
+
|
|
1150
|
+
</h3><div class="docstring">
|
|
1151
|
+
<div class="discussion">
|
|
1152
|
+
<p>Returns Whether to use offset based pagination rather than collection fields values.</p>
|
|
1153
|
+
|
|
1154
|
+
|
|
1155
|
+
</div>
|
|
1156
|
+
</div>
|
|
1157
|
+
<div class="tags">
|
|
1158
|
+
|
|
1159
|
+
<p class="tag_title">Returns:</p>
|
|
1160
|
+
<ul class="return">
|
|
1161
|
+
|
|
1162
|
+
<li>
|
|
1163
|
+
|
|
1164
|
+
|
|
1165
|
+
<span class='type'>(<tt>Boolean</tt>)</span>
|
|
1166
|
+
|
|
1167
|
+
|
|
1168
|
+
|
|
1169
|
+
—
|
|
1170
|
+
<div class='inline'><p>Whether to use offset based pagination rather than collection fields values.</p>
|
|
1171
|
+
</div>
|
|
1172
|
+
|
|
1173
|
+
</li>
|
|
1174
|
+
|
|
1175
|
+
</ul>
|
|
1176
|
+
|
|
1177
|
+
</div><table class="source_code">
|
|
1178
|
+
<tr>
|
|
1179
|
+
<td>
|
|
1180
|
+
<pre class="lines">
|
|
1181
|
+
|
|
1182
|
+
|
|
1183
|
+
17
|
|
1184
|
+
18
|
|
1185
|
+
19
|
|
1186
|
+
20
|
|
1187
|
+
21
|
|
1188
|
+
22
|
|
1189
|
+
23
|
|
1190
|
+
24
|
|
1191
|
+
25
|
|
1192
|
+
26
|
|
1193
|
+
27
|
|
1194
|
+
28
|
|
1195
|
+
29
|
|
1196
|
+
30
|
|
1197
|
+
31
|
|
1198
|
+
32
|
|
1199
|
+
33
|
|
1200
|
+
34
|
|
1201
|
+
35
|
|
1202
|
+
36
|
|
1203
|
+
37
|
|
1204
|
+
38
|
|
1205
|
+
39
|
|
1206
|
+
40
|
|
1207
|
+
41
|
|
1208
|
+
42
|
|
1209
|
+
43
|
|
1210
|
+
44
|
|
1211
|
+
45
|
|
1212
|
+
46
|
|
1213
|
+
47
|
|
1214
|
+
48
|
|
1215
|
+
49
|
|
1216
|
+
50
|
|
1217
|
+
51
|
|
1218
|
+
52
|
|
1219
|
+
53
|
|
1220
|
+
54
|
|
1221
|
+
55
|
|
1222
|
+
56
|
|
1223
|
+
57
|
|
1224
|
+
58
|
|
1225
|
+
59
|
|
1226
|
+
60
|
|
1227
|
+
61
|
|
1228
|
+
62
|
|
1229
|
+
63
|
|
1230
|
+
64
|
|
1231
|
+
65
|
|
1232
|
+
66
|
|
1233
|
+
67
|
|
1234
|
+
68
|
|
1235
|
+
69
|
|
1236
|
+
70
|
|
1237
|
+
71
|
|
1238
|
+
72
|
|
1239
|
+
73
|
|
1240
|
+
74
|
|
1241
|
+
75
|
|
1242
|
+
76
|
|
1243
|
+
77
|
|
1244
|
+
78
|
|
1245
|
+
79
|
|
1246
|
+
80
|
|
1247
|
+
81
|
|
1248
|
+
82
|
|
1249
|
+
83
|
|
1250
|
+
84
|
|
1251
|
+
85
|
|
1252
|
+
86
|
|
1253
|
+
87
|
|
1254
|
+
88
|
|
1255
|
+
89
|
|
1256
|
+
90
|
|
1257
|
+
91
|
|
1258
|
+
92
|
|
1259
|
+
93
|
|
1260
|
+
94
|
|
1261
|
+
95
|
|
1262
|
+
96
|
|
1263
|
+
97
|
|
1264
|
+
98
|
|
1265
|
+
99
|
|
1266
|
+
100
|
|
1267
|
+
101
|
|
1268
|
+
102
|
|
1269
|
+
103
|
|
1270
|
+
104
|
|
1271
|
+
105
|
|
1272
|
+
106
|
|
1273
|
+
107
|
|
1274
|
+
108
|
|
1275
|
+
109
|
|
1276
|
+
110
|
|
1277
|
+
111
|
|
1278
|
+
112
|
|
1279
|
+
113
|
|
1280
|
+
114
|
|
1281
|
+
115
|
|
1282
|
+
116
|
|
1283
|
+
117
|
|
1284
|
+
118
|
|
1285
|
+
119
|
|
1286
|
+
120
|
|
1287
|
+
121
|
|
1288
|
+
122
|
|
1289
|
+
123
|
|
1290
|
+
124
|
|
1291
|
+
125
|
|
1292
|
+
126
|
|
1293
|
+
127
|
|
1294
|
+
128
|
|
1295
|
+
129
|
|
1296
|
+
130
|
|
1297
|
+
131
|
|
1298
|
+
132
|
|
1299
|
+
133
|
|
1300
|
+
134
|
|
1301
|
+
135
|
|
1302
|
+
136
|
|
1303
|
+
137
|
|
1304
|
+
138
|
|
1305
|
+
139
|
|
1306
|
+
140
|
|
1307
|
+
141
|
|
1308
|
+
142
|
|
1309
|
+
143
|
|
1310
|
+
144
|
|
1311
|
+
145
|
|
1312
|
+
146
|
|
1313
|
+
147
|
|
1314
|
+
148
|
|
1315
|
+
149
|
|
1316
|
+
150
|
|
1317
|
+
151</pre>
|
|
1318
|
+
</td>
|
|
1319
|
+
<td>
|
|
1320
|
+
<pre class="code"><span class="info file"># File 'lib/apes/pagination_cursor.rb', line 17</span>
|
|
1321
|
+
|
|
1322
|
+
<span class='kw'>class</span> <span class='const'>PaginationCursor</span>
|
|
1323
|
+
<span class='comment'># The default size of a pagination page.
|
|
1324
|
+
</span> <span class='const'>DEFAULT_SIZE</span> <span class='op'>=</span> <span class='int'>25</span>
|
|
1325
|
+
|
|
1326
|
+
<span class='comment'># Format to serialize timestamp when using them for pagination.
|
|
1327
|
+
</span> <span class='const'>TIMESTAMP_FORMAT</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>%FT%T.%6N%z</span><span class='tstring_end'>"</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span>
|
|
1328
|
+
|
|
1329
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:value</span><span class='comma'>,</span> <span class='symbol'>:use_offset</span><span class='comma'>,</span> <span class='symbol'>:direction</span><span class='comma'>,</span> <span class='symbol'>:size</span>
|
|
1330
|
+
|
|
1331
|
+
<span class='comment'># Creates a new cursor.
|
|
1332
|
+
</span> <span class='comment'>#
|
|
1333
|
+
</span> <span class='comment'># @param params [Hash] The request parameters.
|
|
1334
|
+
</span> <span class='comment'># @param field [Symbol] The parameters field where to lookup for the serialized cursor.
|
|
1335
|
+
</span> <span class='comment'># @param count_field [Symbol] The parameters field where to lookup for the overriding cursor size.
|
|
1336
|
+
</span> <span class='comment'># @return [Apes::PaginationCursor] A new cursor instance.
|
|
1337
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span> <span class='op'>=</span> <span class='symbol'>:page</span><span class='comma'>,</span> <span class='id identifier rubyid_count_field'>count_field</span> <span class='op'>=</span> <span class='symbol'>:count</span><span class='rparen'>)</span>
|
|
1338
|
+
<span class='kw'>begin</span>
|
|
1339
|
+
<span class='id identifier rubyid_payload'>payload</span> <span class='op'>=</span> <span class='const'>JWT</span><span class='period'>.</span><span class='id identifier rubyid_decode'>decode</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='lbracket'>[</span><span class='id identifier rubyid_field'>field</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_jwt_secret'>jwt_secret</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='label'>algorithm:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>HS256</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>verify_aud:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>aud:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>pagination</span><span class='tstring_end'>"</span></span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='int'>0</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>sub</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
1340
|
+
|
|
1341
|
+
<span class='id identifier rubyid_extract_payload'>extract_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_payload'>payload</span><span class='rparen'>)</span>
|
|
1342
|
+
<span class='kw'>rescue</span>
|
|
1343
|
+
<span class='id identifier rubyid_default_payload'>default_payload</span>
|
|
1344
|
+
<span class='kw'>end</span>
|
|
1345
|
+
|
|
1346
|
+
<span class='comment'># Sanitization
|
|
1347
|
+
</span> <span class='id identifier rubyid_sanitize'>sanitize</span><span class='lparen'>(</span><span class='id identifier rubyid_count_field'>count_field</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='rparen'>)</span>
|
|
1348
|
+
<span class='kw'>end</span>
|
|
1349
|
+
|
|
1350
|
+
<span class='comment'># Get the operator (`>` or `<`) for the query according to the direction and the provided ordering.
|
|
1351
|
+
</span> <span class='comment'>#
|
|
1352
|
+
</span> <span class='comment'># @param order [Symbol] The order to use.
|
|
1353
|
+
</span> <span class='comment'># @return [String] The operator to use for the query.
|
|
1354
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_operator'>operator</span><span class='lparen'>(</span><span class='id identifier rubyid_order'>order</span><span class='rparen'>)</span>
|
|
1355
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_direction'>direction</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1356
|
+
<span class='id identifier rubyid_order'>order</span> <span class='op'>==</span> <span class='symbol'>:asc</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>></span><span class='tstring_end'>"</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'><</span><span class='tstring_end'>"</span></span> <span class='comment'># Descending order means newer results first
|
|
1357
|
+
</span> <span class='kw'>else</span>
|
|
1358
|
+
<span class='id identifier rubyid_order'>order</span> <span class='op'>==</span> <span class='symbol'>:asc</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'><</span><span class='tstring_end'>"</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>></span><span class='tstring_end'>"</span></span> <span class='comment'># Descending order means newer results first
|
|
1359
|
+
</span> <span class='kw'>end</span>
|
|
1360
|
+
<span class='kw'>end</span>
|
|
1361
|
+
|
|
1362
|
+
<span class='comment'># Verifies whether a specific page might exist for the given collection.
|
|
1363
|
+
</span> <span class='comment'>#
|
|
1364
|
+
</span> <span class='comment'># @param page [String] The page to check. It can be `first`, `next`, `prev` or `previous`.
|
|
1365
|
+
</span> <span class='comment'># @param collection [Enumerable] The collection to analyze.
|
|
1366
|
+
</span> <span class='comment'># @return [Boolean] Returns `true` if the page might exist for the collection, `false` otherwise.
|
|
1367
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_might_exist?'>might_exist?</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='id identifier rubyid_collection'>collection</span><span class='rparen'>)</span>
|
|
1368
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_page'>page</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
|
|
1369
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>first</span><span class='tstring_end'>"</span></span> <span class='kw'>then</span> <span class='kw'>true</span>
|
|
1370
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span> <span class='kw'>then</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
|
1371
|
+
<span class='kw'>else</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='op'>&&</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='comment'># Previous
|
|
1372
|
+
</span> <span class='kw'>end</span>
|
|
1373
|
+
<span class='kw'>end</span>
|
|
1374
|
+
|
|
1375
|
+
<span class='comment'># Serializes the cursor to send it to the client.
|
|
1376
|
+
</span> <span class='comment'>#
|
|
1377
|
+
</span> <span class='comment'># @param collection [Enumerable] The collection to analyze.
|
|
1378
|
+
</span> <span class='comment'># @param page [String] The page to return. It can be `first`, `next`, `prev` or `previous`.
|
|
1379
|
+
</span> <span class='comment'># @param field [Symbol] When not using offset based pagination, the field to consider for generation.
|
|
1380
|
+
</span> <span class='comment'># @param size [Fixnum] The number of results to advance when using offset based pagination.
|
|
1381
|
+
</span> <span class='comment'># @param use_offset [Boolean] Whether to use offset based pagination.
|
|
1382
|
+
</span> <span class='comment'># @return [String] The serialized cursor.
|
|
1383
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_save'>save</span><span class='lparen'>(</span><span class='id identifier rubyid_collection'>collection</span><span class='comma'>,</span> <span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='label'>field:</span> <span class='symbol'>:id</span><span class='comma'>,</span> <span class='label'>size:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>use_offset:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
|
1384
|
+
<span class='id identifier rubyid_size'>size</span> <span class='op'>||=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span>
|
|
1385
|
+
<span class='id identifier rubyid_use_offset'>use_offset</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_use_offset'>use_offset</span> <span class='kw'>if</span> <span class='id identifier rubyid_use_offset'>use_offset</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
|
1386
|
+
<span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_use_offset'>use_offset</span> <span class='op'>?</span> <span class='id identifier rubyid_update_with_offset'>update_with_offset</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='id identifier rubyid_size'>size</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_update_with_field'>update_with_field</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='id identifier rubyid_collection'>collection</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
1387
|
+
|
|
1388
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_strftime'>strftime</span><span class='lparen'>(</span><span class='const'>TIMESTAMP_FORMAT</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:strftime</span><span class='rparen'>)</span>
|
|
1389
|
+
|
|
1390
|
+
<span class='const'>JWT</span><span class='period'>.</span><span class='id identifier rubyid_encode'>encode</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='label'>aud:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>pagination</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>sub:</span> <span class='lbrace'>{</span><span class='label'>value:</span> <span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='label'>use_offset:</span> <span class='id identifier rubyid_use_offset'>use_offset</span><span class='comma'>,</span> <span class='label'>direction:</span> <span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='label'>size:</span> <span class='id identifier rubyid_size'>size</span><span class='rbrace'>}</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_jwt_secret'>jwt_secret</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>HS256</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
1391
|
+
<span class='kw'>end</span>
|
|
1392
|
+
<span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:serialize</span><span class='comma'>,</span> <span class='symbol'>:save</span>
|
|
1393
|
+
|
|
1394
|
+
<span class='id identifier rubyid_private'>private</span>
|
|
1395
|
+
|
|
1396
|
+
<span class='comment'># :nodoc:
|
|
1397
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_default_payload'>default_payload</span>
|
|
1398
|
+
<span class='ivar'>@value</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
|
1399
|
+
<span class='ivar'>@direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1400
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='int'>0</span>
|
|
1401
|
+
<span class='ivar'>@use_offset</span> <span class='op'>=</span> <span class='kw'>false</span>
|
|
1402
|
+
<span class='kw'>end</span>
|
|
1403
|
+
|
|
1404
|
+
<span class='comment'># :nodoc:
|
|
1405
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_extract_payload'>extract_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_payload'>payload</span><span class='rparen'>)</span>
|
|
1406
|
+
<span class='ivar'>@value</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>value</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
1407
|
+
<span class='ivar'>@direction</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>direction</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
1408
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>size</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
1409
|
+
<span class='ivar'>@use_offset</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>use_offset</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
1410
|
+
<span class='kw'>end</span>
|
|
1411
|
+
|
|
1412
|
+
<span class='comment'># :nodoc:
|
|
1413
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_sanitize'>sanitize</span><span class='lparen'>(</span><span class='id identifier rubyid_count_field'>count_field</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='rparen'>)</span>
|
|
1414
|
+
<span class='ivar'>@direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span> <span class='kw'>unless</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>prev</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='ivar'>@direction</span><span class='rparen'>)</span>
|
|
1415
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='id identifier rubyid_params'>params</span><span class='lbracket'>[</span><span class='id identifier rubyid_count_field'>count_field</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span> <span class='kw'>if</span> <span class='id identifier rubyid_params'>params</span><span class='lbracket'>[</span><span class='id identifier rubyid_count_field'>count_field</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
|
1416
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='const'>DEFAULT_SIZE</span> <span class='kw'>if</span> <span class='ivar'>@size</span> <span class='op'><</span> <span class='int'>1</span>
|
|
1417
|
+
<span class='kw'>end</span>
|
|
1418
|
+
|
|
1419
|
+
<span class='comment'># :nodoc:
|
|
1420
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_update_with_field'>update_with_field</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_collection'>collection</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
1421
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_type'>type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
|
|
1422
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1423
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1424
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='op'>&.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
1425
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>prev</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
1426
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
1427
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='op'>&.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
1428
|
+
<span class='kw'>else</span> <span class='comment'># first
|
|
1429
|
+
</span> <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1430
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
|
1431
|
+
<span class='kw'>end</span>
|
|
1432
|
+
|
|
1433
|
+
<span class='lbracket'>[</span><span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
|
|
1434
|
+
<span class='kw'>end</span>
|
|
1435
|
+
|
|
1436
|
+
<span class='comment'># :nodoc:
|
|
1437
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_update_with_offset'>update_with_offset</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_size'>size</span><span class='rparen'>)</span>
|
|
1438
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_type'>type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
|
|
1439
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1440
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1441
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='op'>+</span> <span class='id identifier rubyid_size'>size</span>
|
|
1442
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>prev</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
1443
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
1444
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='int'>0</span><span class='comma'>,</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='op'>-</span> <span class='id identifier rubyid_size'>size</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span>
|
|
1445
|
+
<span class='kw'>else</span> <span class='comment'># first
|
|
1446
|
+
</span> <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1447
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
|
1448
|
+
<span class='kw'>end</span>
|
|
1449
|
+
|
|
1450
|
+
<span class='lbracket'>[</span><span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
|
|
1451
|
+
<span class='kw'>end</span>
|
|
1452
|
+
|
|
1453
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_jwt_secret'>jwt_secret</span>
|
|
1454
|
+
<span class='const'>Apes</span><span class='op'>::</span><span class='const'>RuntimeConfiguration</span><span class='period'>.</span><span class='id identifier rubyid_jwt_token'>jwt_token</span>
|
|
1455
|
+
<span class='kw'>end</span>
|
|
1456
|
+
<span class='kw'>end</span></pre>
|
|
1457
|
+
</td>
|
|
1458
|
+
</tr>
|
|
1459
|
+
</table>
|
|
1460
|
+
</div>
|
|
1461
|
+
|
|
1462
|
+
|
|
1463
|
+
<span id="value=-instance_method"></span>
|
|
1464
|
+
<div class="method_details ">
|
|
1465
|
+
<h3 class="signature " id="value-instance_method">
|
|
1466
|
+
|
|
1467
|
+
- (<tt>String</tt>) <strong>value</strong>
|
|
1468
|
+
|
|
1469
|
+
|
|
1470
|
+
|
|
1471
|
+
|
|
1472
|
+
|
|
1473
|
+
</h3><div class="docstring">
|
|
1474
|
+
<div class="discussion">
|
|
1475
|
+
<p>Returns The value obtain from previous pagination. It can either be the value of the first or last element in previous iteration.</p>
|
|
1476
|
+
|
|
1477
|
+
|
|
1478
|
+
</div>
|
|
1479
|
+
</div>
|
|
1480
|
+
<div class="tags">
|
|
1481
|
+
|
|
1482
|
+
<p class="tag_title">Returns:</p>
|
|
1483
|
+
<ul class="return">
|
|
1484
|
+
|
|
1485
|
+
<li>
|
|
1486
|
+
|
|
1487
|
+
|
|
1488
|
+
<span class='type'>(<tt>String</tt>)</span>
|
|
1489
|
+
|
|
1490
|
+
|
|
1491
|
+
|
|
1492
|
+
—
|
|
1493
|
+
<div class='inline'><p>The value obtain from previous pagination. It can either be the value of the first or last element in previous iteration.</p>
|
|
1494
|
+
</div>
|
|
1495
|
+
|
|
1496
|
+
</li>
|
|
1497
|
+
|
|
1498
|
+
</ul>
|
|
1499
|
+
|
|
1500
|
+
</div><table class="source_code">
|
|
1501
|
+
<tr>
|
|
1502
|
+
<td>
|
|
1503
|
+
<pre class="lines">
|
|
1504
|
+
|
|
1505
|
+
|
|
1506
|
+
17
|
|
1507
|
+
18
|
|
1508
|
+
19
|
|
1509
|
+
20
|
|
1510
|
+
21
|
|
1511
|
+
22
|
|
1512
|
+
23
|
|
1513
|
+
24
|
|
1514
|
+
25
|
|
1515
|
+
26
|
|
1516
|
+
27
|
|
1517
|
+
28
|
|
1518
|
+
29
|
|
1519
|
+
30
|
|
1520
|
+
31
|
|
1521
|
+
32
|
|
1522
|
+
33
|
|
1523
|
+
34
|
|
1524
|
+
35
|
|
1525
|
+
36
|
|
1526
|
+
37
|
|
1527
|
+
38
|
|
1528
|
+
39
|
|
1529
|
+
40
|
|
1530
|
+
41
|
|
1531
|
+
42
|
|
1532
|
+
43
|
|
1533
|
+
44
|
|
1534
|
+
45
|
|
1535
|
+
46
|
|
1536
|
+
47
|
|
1537
|
+
48
|
|
1538
|
+
49
|
|
1539
|
+
50
|
|
1540
|
+
51
|
|
1541
|
+
52
|
|
1542
|
+
53
|
|
1543
|
+
54
|
|
1544
|
+
55
|
|
1545
|
+
56
|
|
1546
|
+
57
|
|
1547
|
+
58
|
|
1548
|
+
59
|
|
1549
|
+
60
|
|
1550
|
+
61
|
|
1551
|
+
62
|
|
1552
|
+
63
|
|
1553
|
+
64
|
|
1554
|
+
65
|
|
1555
|
+
66
|
|
1556
|
+
67
|
|
1557
|
+
68
|
|
1558
|
+
69
|
|
1559
|
+
70
|
|
1560
|
+
71
|
|
1561
|
+
72
|
|
1562
|
+
73
|
|
1563
|
+
74
|
|
1564
|
+
75
|
|
1565
|
+
76
|
|
1566
|
+
77
|
|
1567
|
+
78
|
|
1568
|
+
79
|
|
1569
|
+
80
|
|
1570
|
+
81
|
|
1571
|
+
82
|
|
1572
|
+
83
|
|
1573
|
+
84
|
|
1574
|
+
85
|
|
1575
|
+
86
|
|
1576
|
+
87
|
|
1577
|
+
88
|
|
1578
|
+
89
|
|
1579
|
+
90
|
|
1580
|
+
91
|
|
1581
|
+
92
|
|
1582
|
+
93
|
|
1583
|
+
94
|
|
1584
|
+
95
|
|
1585
|
+
96
|
|
1586
|
+
97
|
|
1587
|
+
98
|
|
1588
|
+
99
|
|
1589
|
+
100
|
|
1590
|
+
101
|
|
1591
|
+
102
|
|
1592
|
+
103
|
|
1593
|
+
104
|
|
1594
|
+
105
|
|
1595
|
+
106
|
|
1596
|
+
107
|
|
1597
|
+
108
|
|
1598
|
+
109
|
|
1599
|
+
110
|
|
1600
|
+
111
|
|
1601
|
+
112
|
|
1602
|
+
113
|
|
1603
|
+
114
|
|
1604
|
+
115
|
|
1605
|
+
116
|
|
1606
|
+
117
|
|
1607
|
+
118
|
|
1608
|
+
119
|
|
1609
|
+
120
|
|
1610
|
+
121
|
|
1611
|
+
122
|
|
1612
|
+
123
|
|
1613
|
+
124
|
|
1614
|
+
125
|
|
1615
|
+
126
|
|
1616
|
+
127
|
|
1617
|
+
128
|
|
1618
|
+
129
|
|
1619
|
+
130
|
|
1620
|
+
131
|
|
1621
|
+
132
|
|
1622
|
+
133
|
|
1623
|
+
134
|
|
1624
|
+
135
|
|
1625
|
+
136
|
|
1626
|
+
137
|
|
1627
|
+
138
|
|
1628
|
+
139
|
|
1629
|
+
140
|
|
1630
|
+
141
|
|
1631
|
+
142
|
|
1632
|
+
143
|
|
1633
|
+
144
|
|
1634
|
+
145
|
|
1635
|
+
146
|
|
1636
|
+
147
|
|
1637
|
+
148
|
|
1638
|
+
149
|
|
1639
|
+
150
|
|
1640
|
+
151</pre>
|
|
1641
|
+
</td>
|
|
1642
|
+
<td>
|
|
1643
|
+
<pre class="code"><span class="info file"># File 'lib/apes/pagination_cursor.rb', line 17</span>
|
|
1644
|
+
|
|
1645
|
+
<span class='kw'>class</span> <span class='const'>PaginationCursor</span>
|
|
1646
|
+
<span class='comment'># The default size of a pagination page.
|
|
1647
|
+
</span> <span class='const'>DEFAULT_SIZE</span> <span class='op'>=</span> <span class='int'>25</span>
|
|
1648
|
+
|
|
1649
|
+
<span class='comment'># Format to serialize timestamp when using them for pagination.
|
|
1650
|
+
</span> <span class='const'>TIMESTAMP_FORMAT</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>%FT%T.%6N%z</span><span class='tstring_end'>"</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span>
|
|
1651
|
+
|
|
1652
|
+
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:value</span><span class='comma'>,</span> <span class='symbol'>:use_offset</span><span class='comma'>,</span> <span class='symbol'>:direction</span><span class='comma'>,</span> <span class='symbol'>:size</span>
|
|
1653
|
+
|
|
1654
|
+
<span class='comment'># Creates a new cursor.
|
|
1655
|
+
</span> <span class='comment'>#
|
|
1656
|
+
</span> <span class='comment'># @param params [Hash] The request parameters.
|
|
1657
|
+
</span> <span class='comment'># @param field [Symbol] The parameters field where to lookup for the serialized cursor.
|
|
1658
|
+
</span> <span class='comment'># @param count_field [Symbol] The parameters field where to lookup for the overriding cursor size.
|
|
1659
|
+
</span> <span class='comment'># @return [Apes::PaginationCursor] A new cursor instance.
|
|
1660
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span> <span class='op'>=</span> <span class='symbol'>:page</span><span class='comma'>,</span> <span class='id identifier rubyid_count_field'>count_field</span> <span class='op'>=</span> <span class='symbol'>:count</span><span class='rparen'>)</span>
|
|
1661
|
+
<span class='kw'>begin</span>
|
|
1662
|
+
<span class='id identifier rubyid_payload'>payload</span> <span class='op'>=</span> <span class='const'>JWT</span><span class='period'>.</span><span class='id identifier rubyid_decode'>decode</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='lbracket'>[</span><span class='id identifier rubyid_field'>field</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_jwt_secret'>jwt_secret</span><span class='comma'>,</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='label'>algorithm:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>HS256</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>verify_aud:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>aud:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>pagination</span><span class='tstring_end'>"</span></span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='int'>0</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>sub</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
1663
|
+
|
|
1664
|
+
<span class='id identifier rubyid_extract_payload'>extract_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_payload'>payload</span><span class='rparen'>)</span>
|
|
1665
|
+
<span class='kw'>rescue</span>
|
|
1666
|
+
<span class='id identifier rubyid_default_payload'>default_payload</span>
|
|
1667
|
+
<span class='kw'>end</span>
|
|
1668
|
+
|
|
1669
|
+
<span class='comment'># Sanitization
|
|
1670
|
+
</span> <span class='id identifier rubyid_sanitize'>sanitize</span><span class='lparen'>(</span><span class='id identifier rubyid_count_field'>count_field</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='rparen'>)</span>
|
|
1671
|
+
<span class='kw'>end</span>
|
|
1672
|
+
|
|
1673
|
+
<span class='comment'># Get the operator (`>` or `<`) for the query according to the direction and the provided ordering.
|
|
1674
|
+
</span> <span class='comment'>#
|
|
1675
|
+
</span> <span class='comment'># @param order [Symbol] The order to use.
|
|
1676
|
+
</span> <span class='comment'># @return [String] The operator to use for the query.
|
|
1677
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_operator'>operator</span><span class='lparen'>(</span><span class='id identifier rubyid_order'>order</span><span class='rparen'>)</span>
|
|
1678
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_direction'>direction</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1679
|
+
<span class='id identifier rubyid_order'>order</span> <span class='op'>==</span> <span class='symbol'>:asc</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>></span><span class='tstring_end'>"</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'><</span><span class='tstring_end'>"</span></span> <span class='comment'># Descending order means newer results first
|
|
1680
|
+
</span> <span class='kw'>else</span>
|
|
1681
|
+
<span class='id identifier rubyid_order'>order</span> <span class='op'>==</span> <span class='symbol'>:asc</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'><</span><span class='tstring_end'>"</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>></span><span class='tstring_end'>"</span></span> <span class='comment'># Descending order means newer results first
|
|
1682
|
+
</span> <span class='kw'>end</span>
|
|
1683
|
+
<span class='kw'>end</span>
|
|
1684
|
+
|
|
1685
|
+
<span class='comment'># Verifies whether a specific page might exist for the given collection.
|
|
1686
|
+
</span> <span class='comment'>#
|
|
1687
|
+
</span> <span class='comment'># @param page [String] The page to check. It can be `first`, `next`, `prev` or `previous`.
|
|
1688
|
+
</span> <span class='comment'># @param collection [Enumerable] The collection to analyze.
|
|
1689
|
+
</span> <span class='comment'># @return [Boolean] Returns `true` if the page might exist for the collection, `false` otherwise.
|
|
1690
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_might_exist?'>might_exist?</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='id identifier rubyid_collection'>collection</span><span class='rparen'>)</span>
|
|
1691
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_page'>page</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
|
|
1692
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>first</span><span class='tstring_end'>"</span></span> <span class='kw'>then</span> <span class='kw'>true</span>
|
|
1693
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span> <span class='kw'>then</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
|
1694
|
+
<span class='kw'>else</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='op'>&&</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='comment'># Previous
|
|
1695
|
+
</span> <span class='kw'>end</span>
|
|
1696
|
+
<span class='kw'>end</span>
|
|
1697
|
+
|
|
1698
|
+
<span class='comment'># Serializes the cursor to send it to the client.
|
|
1699
|
+
</span> <span class='comment'>#
|
|
1700
|
+
</span> <span class='comment'># @param collection [Enumerable] The collection to analyze.
|
|
1701
|
+
</span> <span class='comment'># @param page [String] The page to return. It can be `first`, `next`, `prev` or `previous`.
|
|
1702
|
+
</span> <span class='comment'># @param field [Symbol] When not using offset based pagination, the field to consider for generation.
|
|
1703
|
+
</span> <span class='comment'># @param size [Fixnum] The number of results to advance when using offset based pagination.
|
|
1704
|
+
</span> <span class='comment'># @param use_offset [Boolean] Whether to use offset based pagination.
|
|
1705
|
+
</span> <span class='comment'># @return [String] The serialized cursor.
|
|
1706
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_save'>save</span><span class='lparen'>(</span><span class='id identifier rubyid_collection'>collection</span><span class='comma'>,</span> <span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='label'>field:</span> <span class='symbol'>:id</span><span class='comma'>,</span> <span class='label'>size:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>use_offset:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
|
1707
|
+
<span class='id identifier rubyid_size'>size</span> <span class='op'>||=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span>
|
|
1708
|
+
<span class='id identifier rubyid_use_offset'>use_offset</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_use_offset'>use_offset</span> <span class='kw'>if</span> <span class='id identifier rubyid_use_offset'>use_offset</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
|
1709
|
+
<span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_use_offset'>use_offset</span> <span class='op'>?</span> <span class='id identifier rubyid_update_with_offset'>update_with_offset</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='id identifier rubyid_size'>size</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_update_with_field'>update_with_field</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='id identifier rubyid_collection'>collection</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
1710
|
+
|
|
1711
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_strftime'>strftime</span><span class='lparen'>(</span><span class='const'>TIMESTAMP_FORMAT</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:strftime</span><span class='rparen'>)</span>
|
|
1712
|
+
|
|
1713
|
+
<span class='const'>JWT</span><span class='period'>.</span><span class='id identifier rubyid_encode'>encode</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='label'>aud:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>pagination</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>sub:</span> <span class='lbrace'>{</span><span class='label'>value:</span> <span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='label'>use_offset:</span> <span class='id identifier rubyid_use_offset'>use_offset</span><span class='comma'>,</span> <span class='label'>direction:</span> <span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='label'>size:</span> <span class='id identifier rubyid_size'>size</span><span class='rbrace'>}</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_jwt_secret'>jwt_secret</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>HS256</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
1714
|
+
<span class='kw'>end</span>
|
|
1715
|
+
<span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:serialize</span><span class='comma'>,</span> <span class='symbol'>:save</span>
|
|
1716
|
+
|
|
1717
|
+
<span class='id identifier rubyid_private'>private</span>
|
|
1718
|
+
|
|
1719
|
+
<span class='comment'># :nodoc:
|
|
1720
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_default_payload'>default_payload</span>
|
|
1721
|
+
<span class='ivar'>@value</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
|
1722
|
+
<span class='ivar'>@direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1723
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='int'>0</span>
|
|
1724
|
+
<span class='ivar'>@use_offset</span> <span class='op'>=</span> <span class='kw'>false</span>
|
|
1725
|
+
<span class='kw'>end</span>
|
|
1726
|
+
|
|
1727
|
+
<span class='comment'># :nodoc:
|
|
1728
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_extract_payload'>extract_payload</span><span class='lparen'>(</span><span class='id identifier rubyid_payload'>payload</span><span class='rparen'>)</span>
|
|
1729
|
+
<span class='ivar'>@value</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>value</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
1730
|
+
<span class='ivar'>@direction</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>direction</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
1731
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>size</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
1732
|
+
<span class='ivar'>@use_offset</span> <span class='op'>=</span> <span class='id identifier rubyid_payload'>payload</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>use_offset</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span>
|
|
1733
|
+
<span class='kw'>end</span>
|
|
1734
|
+
|
|
1735
|
+
<span class='comment'># :nodoc:
|
|
1736
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_sanitize'>sanitize</span><span class='lparen'>(</span><span class='id identifier rubyid_count_field'>count_field</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='rparen'>)</span>
|
|
1737
|
+
<span class='ivar'>@direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span> <span class='kw'>unless</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>prev</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='ivar'>@direction</span><span class='rparen'>)</span>
|
|
1738
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='id identifier rubyid_params'>params</span><span class='lbracket'>[</span><span class='id identifier rubyid_count_field'>count_field</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span> <span class='kw'>if</span> <span class='id identifier rubyid_params'>params</span><span class='lbracket'>[</span><span class='id identifier rubyid_count_field'>count_field</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
|
1739
|
+
<span class='ivar'>@size</span> <span class='op'>=</span> <span class='const'>DEFAULT_SIZE</span> <span class='kw'>if</span> <span class='ivar'>@size</span> <span class='op'><</span> <span class='int'>1</span>
|
|
1740
|
+
<span class='kw'>end</span>
|
|
1741
|
+
|
|
1742
|
+
<span class='comment'># :nodoc:
|
|
1743
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_update_with_field'>update_with_field</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_collection'>collection</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
1744
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_type'>type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
|
|
1745
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1746
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1747
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='op'>&.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
1748
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>prev</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
1749
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
1750
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='op'>&.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
1751
|
+
<span class='kw'>else</span> <span class='comment'># first
|
|
1752
|
+
</span> <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1753
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
|
1754
|
+
<span class='kw'>end</span>
|
|
1755
|
+
|
|
1756
|
+
<span class='lbracket'>[</span><span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
|
|
1757
|
+
<span class='kw'>end</span>
|
|
1758
|
+
|
|
1759
|
+
<span class='comment'># :nodoc:
|
|
1760
|
+
</span> <span class='kw'>def</span> <span class='id identifier rubyid_update_with_offset'>update_with_offset</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_size'>size</span><span class='rparen'>)</span>
|
|
1761
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_type'>type</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
|
|
1762
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1763
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1764
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='op'>+</span> <span class='id identifier rubyid_size'>size</span>
|
|
1765
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>prev</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
1766
|
+
<span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>previous</span><span class='tstring_end'>"</span></span>
|
|
1767
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='int'>0</span><span class='comma'>,</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='op'>-</span> <span class='id identifier rubyid_size'>size</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span>
|
|
1768
|
+
<span class='kw'>else</span> <span class='comment'># first
|
|
1769
|
+
</span> <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1770
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
|
1771
|
+
<span class='kw'>end</span>
|
|
1772
|
+
|
|
1773
|
+
<span class='lbracket'>[</span><span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
|
|
1774
|
+
<span class='kw'>end</span>
|
|
1775
|
+
|
|
1776
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_jwt_secret'>jwt_secret</span>
|
|
1777
|
+
<span class='const'>Apes</span><span class='op'>::</span><span class='const'>RuntimeConfiguration</span><span class='period'>.</span><span class='id identifier rubyid_jwt_token'>jwt_token</span>
|
|
1778
|
+
<span class='kw'>end</span>
|
|
1779
|
+
<span class='kw'>end</span></pre>
|
|
1780
|
+
</td>
|
|
1781
|
+
</tr>
|
|
1782
|
+
</table>
|
|
1783
|
+
</div>
|
|
1784
|
+
|
|
1785
|
+
</div>
|
|
1786
|
+
|
|
1787
|
+
|
|
1788
|
+
<div id="instance_method_details" class="method_details_list">
|
|
1789
|
+
<h2>Instance Method Details</h2>
|
|
1790
|
+
|
|
1791
|
+
|
|
1792
|
+
<div class="method_details first">
|
|
1793
|
+
<h3 class="signature first" id="might_exist?-instance_method">
|
|
1794
|
+
|
|
1795
|
+
- (<tt>Boolean</tt>) <strong>might_exist?</strong>(page, collection)
|
|
1796
|
+
|
|
1797
|
+
|
|
1798
|
+
|
|
1799
|
+
|
|
1800
|
+
|
|
1801
|
+
</h3><div class="docstring">
|
|
1802
|
+
<div class="discussion">
|
|
1803
|
+
<p>Verifies whether a specific page might exist for the given collection.</p>
|
|
1804
|
+
|
|
1805
|
+
|
|
1806
|
+
</div>
|
|
1807
|
+
</div>
|
|
1808
|
+
<div class="tags">
|
|
1809
|
+
<p class="tag_title">Parameters:</p>
|
|
1810
|
+
<ul class="param">
|
|
1811
|
+
|
|
1812
|
+
<li>
|
|
1813
|
+
|
|
1814
|
+
<span class='name'>page</span>
|
|
1815
|
+
|
|
1816
|
+
|
|
1817
|
+
<span class='type'>(<tt>String</tt>)</span>
|
|
1818
|
+
|
|
1819
|
+
|
|
1820
|
+
|
|
1821
|
+
—
|
|
1822
|
+
<div class='inline'><p>The page to check. It can be <code>first</code>, <code>next</code>, <code>prev</code> or <code>previous</code>.</p>
|
|
1823
|
+
</div>
|
|
1824
|
+
|
|
1825
|
+
</li>
|
|
1826
|
+
|
|
1827
|
+
<li>
|
|
1828
|
+
|
|
1829
|
+
<span class='name'>collection</span>
|
|
1830
|
+
|
|
1831
|
+
|
|
1832
|
+
<span class='type'>(<tt>Enumerable</tt>)</span>
|
|
1833
|
+
|
|
1834
|
+
|
|
1835
|
+
|
|
1836
|
+
—
|
|
1837
|
+
<div class='inline'><p>The collection to analyze.</p>
|
|
1838
|
+
</div>
|
|
1839
|
+
|
|
1840
|
+
</li>
|
|
1841
|
+
|
|
1842
|
+
</ul>
|
|
1843
|
+
|
|
1844
|
+
<p class="tag_title">Returns:</p>
|
|
1845
|
+
<ul class="return">
|
|
1846
|
+
|
|
1847
|
+
<li>
|
|
1848
|
+
|
|
1849
|
+
|
|
1850
|
+
<span class='type'>(<tt>Boolean</tt>)</span>
|
|
1851
|
+
|
|
1852
|
+
|
|
1853
|
+
|
|
1854
|
+
—
|
|
1855
|
+
<div class='inline'><p>Returns <code>true</code> if the page might exist for the collection, <code>false</code> otherwise.</p>
|
|
1856
|
+
</div>
|
|
1857
|
+
|
|
1858
|
+
</li>
|
|
1859
|
+
|
|
1860
|
+
</ul>
|
|
1861
|
+
|
|
1862
|
+
</div><table class="source_code">
|
|
1863
|
+
<tr>
|
|
1864
|
+
<td>
|
|
1865
|
+
<pre class="lines">
|
|
1866
|
+
|
|
1867
|
+
|
|
1868
|
+
62
|
|
1869
|
+
63
|
|
1870
|
+
64
|
|
1871
|
+
65
|
|
1872
|
+
66
|
|
1873
|
+
67
|
|
1874
|
+
68</pre>
|
|
1875
|
+
</td>
|
|
1876
|
+
<td>
|
|
1877
|
+
<pre class="code"><span class="info file"># File 'lib/apes/pagination_cursor.rb', line 62</span>
|
|
1878
|
+
|
|
1879
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_might_exist?'>might_exist?</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='id identifier rubyid_collection'>collection</span><span class='rparen'>)</span>
|
|
1880
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_page'>page</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
|
|
1881
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>first</span><span class='tstring_end'>"</span></span> <span class='kw'>then</span> <span class='kw'>true</span>
|
|
1882
|
+
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span> <span class='kw'>then</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span>
|
|
1883
|
+
<span class='kw'>else</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='op'>&&</span> <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_present?'>present?</span> <span class='comment'># Previous
|
|
1884
|
+
</span> <span class='kw'>end</span>
|
|
1885
|
+
<span class='kw'>end</span></pre>
|
|
1886
|
+
</td>
|
|
1887
|
+
</tr>
|
|
1888
|
+
</table>
|
|
1889
|
+
</div>
|
|
1890
|
+
|
|
1891
|
+
<div class="method_details ">
|
|
1892
|
+
<h3 class="signature " id="operator-instance_method">
|
|
1893
|
+
|
|
1894
|
+
- (<tt>String</tt>) <strong>operator</strong>(order)
|
|
1895
|
+
|
|
1896
|
+
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
|
|
1900
|
+
</h3><div class="docstring">
|
|
1901
|
+
<div class="discussion">
|
|
1902
|
+
<p>Get the operator (<code>></code> or <code><</code>) for the query according to the direction and the provided ordering.</p>
|
|
1903
|
+
|
|
1904
|
+
|
|
1905
|
+
</div>
|
|
1906
|
+
</div>
|
|
1907
|
+
<div class="tags">
|
|
1908
|
+
<p class="tag_title">Parameters:</p>
|
|
1909
|
+
<ul class="param">
|
|
1910
|
+
|
|
1911
|
+
<li>
|
|
1912
|
+
|
|
1913
|
+
<span class='name'>order</span>
|
|
1914
|
+
|
|
1915
|
+
|
|
1916
|
+
<span class='type'>(<tt>Symbol</tt>)</span>
|
|
1917
|
+
|
|
1918
|
+
|
|
1919
|
+
|
|
1920
|
+
—
|
|
1921
|
+
<div class='inline'><p>The order to use.</p>
|
|
1922
|
+
</div>
|
|
1923
|
+
|
|
1924
|
+
</li>
|
|
1925
|
+
|
|
1926
|
+
</ul>
|
|
1927
|
+
|
|
1928
|
+
<p class="tag_title">Returns:</p>
|
|
1929
|
+
<ul class="return">
|
|
1930
|
+
|
|
1931
|
+
<li>
|
|
1932
|
+
|
|
1933
|
+
|
|
1934
|
+
<span class='type'>(<tt>String</tt>)</span>
|
|
1935
|
+
|
|
1936
|
+
|
|
1937
|
+
|
|
1938
|
+
—
|
|
1939
|
+
<div class='inline'><p>The operator to use for the query.</p>
|
|
1940
|
+
</div>
|
|
1941
|
+
|
|
1942
|
+
</li>
|
|
1943
|
+
|
|
1944
|
+
</ul>
|
|
1945
|
+
|
|
1946
|
+
</div><table class="source_code">
|
|
1947
|
+
<tr>
|
|
1948
|
+
<td>
|
|
1949
|
+
<pre class="lines">
|
|
1950
|
+
|
|
1951
|
+
|
|
1952
|
+
49
|
|
1953
|
+
50
|
|
1954
|
+
51
|
|
1955
|
+
52
|
|
1956
|
+
53
|
|
1957
|
+
54
|
|
1958
|
+
55</pre>
|
|
1959
|
+
</td>
|
|
1960
|
+
<td>
|
|
1961
|
+
<pre class="code"><span class="info file"># File 'lib/apes/pagination_cursor.rb', line 49</span>
|
|
1962
|
+
|
|
1963
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_operator'>operator</span><span class='lparen'>(</span><span class='id identifier rubyid_order'>order</span><span class='rparen'>)</span>
|
|
1964
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_direction'>direction</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>next</span><span class='tstring_end'>"</span></span>
|
|
1965
|
+
<span class='id identifier rubyid_order'>order</span> <span class='op'>==</span> <span class='symbol'>:asc</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>></span><span class='tstring_end'>"</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'><</span><span class='tstring_end'>"</span></span> <span class='comment'># Descending order means newer results first
|
|
1966
|
+
</span> <span class='kw'>else</span>
|
|
1967
|
+
<span class='id identifier rubyid_order'>order</span> <span class='op'>==</span> <span class='symbol'>:asc</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'><</span><span class='tstring_end'>"</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>></span><span class='tstring_end'>"</span></span> <span class='comment'># Descending order means newer results first
|
|
1968
|
+
</span> <span class='kw'>end</span>
|
|
1969
|
+
<span class='kw'>end</span></pre>
|
|
1970
|
+
</td>
|
|
1971
|
+
</tr>
|
|
1972
|
+
</table>
|
|
1973
|
+
</div>
|
|
1974
|
+
|
|
1975
|
+
<div class="method_details ">
|
|
1976
|
+
<h3 class="signature " id="save-instance_method">
|
|
1977
|
+
|
|
1978
|
+
- (<tt>String</tt>) <strong>save</strong>(collection, page, field: :id, size: nil, use_offset: nil)
|
|
1979
|
+
|
|
1980
|
+
|
|
1981
|
+
|
|
1982
|
+
<span class="aliases">Also known as:
|
|
1983
|
+
<span class="names"><span id='serialize-instance_method'>serialize</span></span>
|
|
1984
|
+
</span>
|
|
1985
|
+
|
|
1986
|
+
|
|
1987
|
+
|
|
1988
|
+
</h3><div class="docstring">
|
|
1989
|
+
<div class="discussion">
|
|
1990
|
+
<p>Serializes the cursor to send it to the client.</p>
|
|
1991
|
+
|
|
1992
|
+
|
|
1993
|
+
</div>
|
|
1994
|
+
</div>
|
|
1995
|
+
<div class="tags">
|
|
1996
|
+
<p class="tag_title">Parameters:</p>
|
|
1997
|
+
<ul class="param">
|
|
1998
|
+
|
|
1999
|
+
<li>
|
|
2000
|
+
|
|
2001
|
+
<span class='name'>collection</span>
|
|
2002
|
+
|
|
2003
|
+
|
|
2004
|
+
<span class='type'>(<tt>Enumerable</tt>)</span>
|
|
2005
|
+
|
|
2006
|
+
|
|
2007
|
+
|
|
2008
|
+
—
|
|
2009
|
+
<div class='inline'><p>The collection to analyze.</p>
|
|
2010
|
+
</div>
|
|
2011
|
+
|
|
2012
|
+
</li>
|
|
2013
|
+
|
|
2014
|
+
<li>
|
|
2015
|
+
|
|
2016
|
+
<span class='name'>page</span>
|
|
2017
|
+
|
|
2018
|
+
|
|
2019
|
+
<span class='type'>(<tt>String</tt>)</span>
|
|
2020
|
+
|
|
2021
|
+
|
|
2022
|
+
|
|
2023
|
+
—
|
|
2024
|
+
<div class='inline'><p>The page to return. It can be <code>first</code>, <code>next</code>, <code>prev</code> or <code>previous</code>.</p>
|
|
2025
|
+
</div>
|
|
2026
|
+
|
|
2027
|
+
</li>
|
|
2028
|
+
|
|
2029
|
+
<li>
|
|
2030
|
+
|
|
2031
|
+
<span class='name'>field</span>
|
|
2032
|
+
|
|
2033
|
+
|
|
2034
|
+
<span class='type'>(<tt>Symbol</tt>)</span>
|
|
2035
|
+
|
|
2036
|
+
|
|
2037
|
+
|
|
2038
|
+
—
|
|
2039
|
+
<div class='inline'><p>When not using offset based pagination, the field to consider for generation.</p>
|
|
2040
|
+
</div>
|
|
2041
|
+
|
|
2042
|
+
</li>
|
|
2043
|
+
|
|
2044
|
+
<li>
|
|
2045
|
+
|
|
2046
|
+
<span class='name'>size</span>
|
|
2047
|
+
|
|
2048
|
+
|
|
2049
|
+
<span class='type'>(<tt>Fixnum</tt>)</span>
|
|
2050
|
+
|
|
2051
|
+
|
|
2052
|
+
|
|
2053
|
+
—
|
|
2054
|
+
<div class='inline'><p>The number of results to advance when using offset based pagination.</p>
|
|
2055
|
+
</div>
|
|
2056
|
+
|
|
2057
|
+
</li>
|
|
2058
|
+
|
|
2059
|
+
<li>
|
|
2060
|
+
|
|
2061
|
+
<span class='name'>use_offset</span>
|
|
2062
|
+
|
|
2063
|
+
|
|
2064
|
+
<span class='type'>(<tt>Boolean</tt>)</span>
|
|
2065
|
+
|
|
2066
|
+
|
|
2067
|
+
|
|
2068
|
+
—
|
|
2069
|
+
<div class='inline'><p>Whether to use offset based pagination.</p>
|
|
2070
|
+
</div>
|
|
2071
|
+
|
|
2072
|
+
</li>
|
|
2073
|
+
|
|
2074
|
+
</ul>
|
|
2075
|
+
|
|
2076
|
+
<p class="tag_title">Returns:</p>
|
|
2077
|
+
<ul class="return">
|
|
2078
|
+
|
|
2079
|
+
<li>
|
|
2080
|
+
|
|
2081
|
+
|
|
2082
|
+
<span class='type'>(<tt>String</tt>)</span>
|
|
2083
|
+
|
|
2084
|
+
|
|
2085
|
+
|
|
2086
|
+
—
|
|
2087
|
+
<div class='inline'><p>The serialized cursor.</p>
|
|
2088
|
+
</div>
|
|
2089
|
+
|
|
2090
|
+
</li>
|
|
2091
|
+
|
|
2092
|
+
</ul>
|
|
2093
|
+
|
|
2094
|
+
</div><table class="source_code">
|
|
2095
|
+
<tr>
|
|
2096
|
+
<td>
|
|
2097
|
+
<pre class="lines">
|
|
2098
|
+
|
|
2099
|
+
|
|
2100
|
+
78
|
|
2101
|
+
79
|
|
2102
|
+
80
|
|
2103
|
+
81
|
|
2104
|
+
82
|
|
2105
|
+
83
|
|
2106
|
+
84
|
|
2107
|
+
85
|
|
2108
|
+
86</pre>
|
|
2109
|
+
</td>
|
|
2110
|
+
<td>
|
|
2111
|
+
<pre class="code"><span class="info file"># File 'lib/apes/pagination_cursor.rb', line 78</span>
|
|
2112
|
+
|
|
2113
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_save'>save</span><span class='lparen'>(</span><span class='id identifier rubyid_collection'>collection</span><span class='comma'>,</span> <span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='label'>field:</span> <span class='symbol'>:id</span><span class='comma'>,</span> <span class='label'>size:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>use_offset:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
|
2114
|
+
<span class='id identifier rubyid_size'>size</span> <span class='op'>||=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span>
|
|
2115
|
+
<span class='id identifier rubyid_use_offset'>use_offset</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_use_offset'>use_offset</span> <span class='kw'>if</span> <span class='id identifier rubyid_use_offset'>use_offset</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
|
|
2116
|
+
<span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_use_offset'>use_offset</span> <span class='op'>?</span> <span class='id identifier rubyid_update_with_offset'>update_with_offset</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='id identifier rubyid_size'>size</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_update_with_field'>update_with_field</span><span class='lparen'>(</span><span class='id identifier rubyid_page'>page</span><span class='comma'>,</span> <span class='id identifier rubyid_collection'>collection</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span><span class='rparen'>)</span>
|
|
2117
|
+
|
|
2118
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_strftime'>strftime</span><span class='lparen'>(</span><span class='const'>TIMESTAMP_FORMAT</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:strftime</span><span class='rparen'>)</span>
|
|
2119
|
+
|
|
2120
|
+
<span class='const'>JWT</span><span class='period'>.</span><span class='id identifier rubyid_encode'>encode</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='label'>aud:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>pagination</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>sub:</span> <span class='lbrace'>{</span><span class='label'>value:</span> <span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='label'>use_offset:</span> <span class='id identifier rubyid_use_offset'>use_offset</span><span class='comma'>,</span> <span class='label'>direction:</span> <span class='id identifier rubyid_direction'>direction</span><span class='comma'>,</span> <span class='label'>size:</span> <span class='id identifier rubyid_size'>size</span><span class='rbrace'>}</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='id identifier rubyid_jwt_secret'>jwt_secret</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>HS256</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
2121
|
+
<span class='kw'>end</span></pre>
|
|
2122
|
+
</td>
|
|
2123
|
+
</tr>
|
|
2124
|
+
</table>
|
|
2125
|
+
</div>
|
|
2126
|
+
|
|
2127
|
+
</div>
|
|
2128
|
+
|
|
2129
|
+
</div>
|
|
2130
|
+
|
|
2131
|
+
<div id="footer">
|
|
2132
|
+
Generated on Sat Jun 4 12:41:54 2016 by
|
|
2133
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
2134
|
+
0.8.7.6 (ruby-2.3.0).
|
|
2135
|
+
</div>
|
|
2136
|
+
|
|
2137
|
+
</body>
|
|
2138
|
+
</html>
|