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.
Files changed (122) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -0
  3. data/.rubocop.yml +82 -0
  4. data/.travis-gemfile +15 -0
  5. data/.travis.yml +15 -0
  6. data/.yardopts +1 -0
  7. data/CHANGELOG.md +3 -0
  8. data/Gemfile +22 -0
  9. data/README.md +177 -0
  10. data/Rakefile +44 -0
  11. data/apes.gemspec +34 -0
  12. data/doc/Apes.html +130 -0
  13. data/doc/Apes/Concerns.html +127 -0
  14. data/doc/Apes/Concerns/Errors.html +1089 -0
  15. data/doc/Apes/Concerns/Pagination.html +636 -0
  16. data/doc/Apes/Concerns/Request.html +766 -0
  17. data/doc/Apes/Concerns/Response.html +940 -0
  18. data/doc/Apes/Controller.html +1100 -0
  19. data/doc/Apes/Errors.html +125 -0
  20. data/doc/Apes/Errors/AuthenticationError.html +133 -0
  21. data/doc/Apes/Errors/BadRequestError.html +157 -0
  22. data/doc/Apes/Errors/BaseError.html +320 -0
  23. data/doc/Apes/Errors/InvalidDataError.html +157 -0
  24. data/doc/Apes/Errors/MissingDataError.html +157 -0
  25. data/doc/Apes/Model.html +378 -0
  26. data/doc/Apes/PaginationCursor.html +2138 -0
  27. data/doc/Apes/RuntimeConfiguration.html +909 -0
  28. data/doc/Apes/Serializers.html +125 -0
  29. data/doc/Apes/Serializers/JSON.html +389 -0
  30. data/doc/Apes/Serializers/JWT.html +452 -0
  31. data/doc/Apes/Serializers/List.html +347 -0
  32. data/doc/Apes/UrlsParser.html +1432 -0
  33. data/doc/Apes/Validators.html +125 -0
  34. data/doc/Apes/Validators/BaseValidator.html +278 -0
  35. data/doc/Apes/Validators/BooleanValidator.html +494 -0
  36. data/doc/Apes/Validators/EmailValidator.html +350 -0
  37. data/doc/Apes/Validators/PhoneValidator.html +375 -0
  38. data/doc/Apes/Validators/ReferenceValidator.html +372 -0
  39. data/doc/Apes/Validators/TimestampValidator.html +640 -0
  40. data/doc/Apes/Validators/UuidValidator.html +372 -0
  41. data/doc/Apes/Validators/ZipCodeValidator.html +372 -0
  42. data/doc/Apes/Version.html +189 -0
  43. data/doc/ApplicationController.html +547 -0
  44. data/doc/Concerns.html +128 -0
  45. data/doc/Concerns/ErrorHandling.html +826 -0
  46. data/doc/Concerns/PaginationHandling.html +463 -0
  47. data/doc/Concerns/RequestHandling.html +512 -0
  48. data/doc/Concerns/ResponseHandling.html +579 -0
  49. data/doc/Errors.html +126 -0
  50. data/doc/Errors/AuthenticationError.html +123 -0
  51. data/doc/Errors/BadRequestError.html +147 -0
  52. data/doc/Errors/BaseError.html +289 -0
  53. data/doc/Errors/InvalidDataError.html +147 -0
  54. data/doc/Errors/MissingDataError.html +147 -0
  55. data/doc/Model.html +315 -0
  56. data/doc/PaginationCursor.html +764 -0
  57. data/doc/Serializers.html +126 -0
  58. data/doc/Serializers/JSON.html +253 -0
  59. data/doc/Serializers/JWT.html +253 -0
  60. data/doc/Serializers/List.html +245 -0
  61. data/doc/Validators.html +126 -0
  62. data/doc/Validators/BaseValidator.html +209 -0
  63. data/doc/Validators/BooleanValidator.html +391 -0
  64. data/doc/Validators/EmailValidator.html +298 -0
  65. data/doc/Validators/PhoneValidator.html +313 -0
  66. data/doc/Validators/ReferenceValidator.html +284 -0
  67. data/doc/Validators/TimestampValidator.html +476 -0
  68. data/doc/Validators/UuidValidator.html +310 -0
  69. data/doc/Validators/ZipCodeValidator.html +310 -0
  70. data/doc/_index.html +435 -0
  71. data/doc/class_list.html +58 -0
  72. data/doc/css/common.css +1 -0
  73. data/doc/css/full_list.css +57 -0
  74. data/doc/css/style.css +339 -0
  75. data/doc/file.README.html +252 -0
  76. data/doc/file_list.html +60 -0
  77. data/doc/frames.html +26 -0
  78. data/doc/index.html +252 -0
  79. data/doc/js/app.js +219 -0
  80. data/doc/js/full_list.js +181 -0
  81. data/doc/js/jquery.js +4 -0
  82. data/doc/method_list.html +615 -0
  83. data/doc/top-level-namespace.html +112 -0
  84. data/lib/apes.rb +40 -0
  85. data/lib/apes/concerns/errors.rb +111 -0
  86. data/lib/apes/concerns/pagination.rb +81 -0
  87. data/lib/apes/concerns/request.rb +237 -0
  88. data/lib/apes/concerns/response.rb +74 -0
  89. data/lib/apes/controller.rb +77 -0
  90. data/lib/apes/errors.rb +38 -0
  91. data/lib/apes/model.rb +94 -0
  92. data/lib/apes/pagination_cursor.rb +152 -0
  93. data/lib/apes/runtime_configuration.rb +80 -0
  94. data/lib/apes/serializers.rb +88 -0
  95. data/lib/apes/urls_parser.rb +233 -0
  96. data/lib/apes/validators.rb +234 -0
  97. data/lib/apes/version.rb +24 -0
  98. data/spec/apes/concerns/errors_spec.rb +141 -0
  99. data/spec/apes/concerns/pagination_spec.rb +114 -0
  100. data/spec/apes/concerns/request_spec.rb +244 -0
  101. data/spec/apes/concerns/response_spec.rb +79 -0
  102. data/spec/apes/controller_spec.rb +54 -0
  103. data/spec/apes/errors_spec.rb +14 -0
  104. data/spec/apes/models_spec.rb +148 -0
  105. data/spec/apes/pagination_cursor_spec.rb +113 -0
  106. data/spec/apes/runtime_configuration_spec.rb +100 -0
  107. data/spec/apes/serializers_spec.rb +70 -0
  108. data/spec/apes/urls_parser_spec.rb +150 -0
  109. data/spec/apes/validators_spec.rb +237 -0
  110. data/spec/spec_helper.rb +30 -0
  111. data/views/_included.json.jbuilder +9 -0
  112. data/views/_pagination.json.jbuilder +9 -0
  113. data/views/collection.json.jbuilder +4 -0
  114. data/views/errors/400.json.jbuilder +9 -0
  115. data/views/errors/403.json.jbuilder +7 -0
  116. data/views/errors/404.json.jbuilder +6 -0
  117. data/views/errors/422.json.jbuilder +19 -0
  118. data/views/errors/500.json.jbuilder +12 -0
  119. data/views/errors/501.json.jbuilder +7 -0
  120. data/views/layouts/general.json.jbuilder +36 -0
  121. data/views/object.json.jbuilder +4 -0
  122. 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
+ &mdash; 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> &raquo;
35
+ <span class='title'><span class='object_link'><a href="../Apes.html" title="Apes (module)">Apes</a></span></span>
36
+ &raquo;
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'>&quot;</span><span class='tstring_content'>%FT%T.%6N%z</span><span class='tstring_end'>&quot;</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>&gt;</code> or <code>&lt;</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
+ &mdash;
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
+ &mdash;
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
+ &mdash;
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'>&quot;</span><span class='tstring_content'>HS256</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>pagination</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>sub</span><span class='tstring_end'>&quot;</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
+ &mdash;
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'>&quot;</span><span class='tstring_content'>%FT%T.%6N%z</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>HS256</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>pagination</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>sub</span><span class='tstring_end'>&quot;</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 (`&gt;` or `&lt;`) 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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>&gt;</span><span class='tstring_end'>&quot;</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&lt;</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>&lt;</span><span class='tstring_end'>&quot;</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&gt;</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>first</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&amp;&amp;</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'>&quot;</span><span class='tstring_content'>pagination</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>HS256</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>value</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>direction</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>size</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>use_offset</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>prev</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</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'>&lt;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</span></span>
777
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&amp;.</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'>&quot;</span><span class='tstring_content'>prev</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</span></span>
780
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</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'>&amp;.</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</span></span>
794
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>prev</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</span></span>
797
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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
+ &mdash;
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'>&quot;</span><span class='tstring_content'>%FT%T.%6N%z</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>HS256</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>pagination</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>sub</span><span class='tstring_end'>&quot;</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 (`&gt;` or `&lt;`) 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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>&gt;</span><span class='tstring_end'>&quot;</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&lt;</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>&lt;</span><span class='tstring_end'>&quot;</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&gt;</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>first</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&amp;&amp;</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'>&quot;</span><span class='tstring_content'>pagination</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>HS256</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>value</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>direction</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>size</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>use_offset</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>prev</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</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'>&lt;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</span></span>
1100
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&amp;.</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'>&quot;</span><span class='tstring_content'>prev</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</span></span>
1103
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</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'>&amp;.</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</span></span>
1117
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>prev</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</span></span>
1120
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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
+ &mdash;
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'>&quot;</span><span class='tstring_content'>%FT%T.%6N%z</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>HS256</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>pagination</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>sub</span><span class='tstring_end'>&quot;</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 (`&gt;` or `&lt;`) 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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>&gt;</span><span class='tstring_end'>&quot;</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&lt;</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>&lt;</span><span class='tstring_end'>&quot;</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&gt;</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>first</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&amp;&amp;</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'>&quot;</span><span class='tstring_content'>pagination</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>HS256</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>value</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>direction</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>size</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>use_offset</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>prev</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</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'>&lt;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</span></span>
1423
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&amp;.</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'>&quot;</span><span class='tstring_content'>prev</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</span></span>
1426
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</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'>&amp;.</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</span></span>
1440
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>prev</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</span></span>
1443
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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
+ &mdash;
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'>&quot;</span><span class='tstring_content'>%FT%T.%6N%z</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>HS256</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>pagination</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>sub</span><span class='tstring_end'>&quot;</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 (`&gt;` or `&lt;`) 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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>&gt;</span><span class='tstring_end'>&quot;</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&lt;</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>&lt;</span><span class='tstring_end'>&quot;</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&gt;</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>first</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&amp;&amp;</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'>&quot;</span><span class='tstring_content'>pagination</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>HS256</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>value</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>direction</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>size</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>use_offset</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>prev</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</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'>&lt;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</span></span>
1746
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&amp;.</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'>&quot;</span><span class='tstring_content'>prev</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</span></span>
1749
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</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'>&amp;.</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</span></span>
1763
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>prev</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</span></span>
1766
+ <span class='id identifier rubyid_direction'>direction</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>previous</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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
+ &mdash;
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
+ &mdash;
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
+ &mdash;
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'>&quot;</span><span class='tstring_content'>first</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&amp;&amp;</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>&gt;</code> or <code>&lt;</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
+ &mdash;
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
+ &mdash;
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'>&quot;</span><span class='tstring_content'>next</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>&gt;</span><span class='tstring_end'>&quot;</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&lt;</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>&lt;</span><span class='tstring_end'>&quot;</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&gt;</span><span class='tstring_end'>&quot;</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
+ &mdash;
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
+ &mdash;
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
+ &mdash;
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
+ &mdash;
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
+ &mdash;
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
+ &mdash;
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'>&quot;</span><span class='tstring_content'>pagination</span><span class='tstring_end'>&quot;</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'>&quot;</span><span class='tstring_content'>HS256</span><span class='tstring_end'>&quot;</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>