apes 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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>