jsonapi_compliable 0.9.2 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/docs/Jsonapi/ResourceGenerator.html +1 -1
  3. data/docs/Jsonapi.html +1 -1
  4. data/docs/JsonapiCompliable/Adapters/Abstract.html +1 -1
  5. data/docs/JsonapiCompliable/Adapters/ActiveRecord.html +1 -1
  6. data/docs/JsonapiCompliable/Adapters/ActiveRecordSideloading.html +1 -1
  7. data/docs/JsonapiCompliable/Adapters/Null.html +1 -1
  8. data/docs/JsonapiCompliable/Adapters.html +1 -1
  9. data/docs/JsonapiCompliable/Base.html +389 -62
  10. data/docs/JsonapiCompliable/Deserializer.html +1 -1
  11. data/docs/JsonapiCompliable/Errors/BadFilter.html +1 -1
  12. data/docs/JsonapiCompliable/Errors/StatNotFound.html +1 -1
  13. data/docs/JsonapiCompliable/Errors/UnsupportedPageSize.html +1 -1
  14. data/docs/JsonapiCompliable/Errors/ValidationError.html +1 -1
  15. data/docs/JsonapiCompliable/Errors.html +1 -1
  16. data/docs/JsonapiCompliable/Extensions/BooleanAttribute/ClassMethods.html +1 -1
  17. data/docs/JsonapiCompliable/Extensions/BooleanAttribute.html +1 -1
  18. data/docs/JsonapiCompliable/Extensions/ExtraAttribute/ClassMethods.html +1 -1
  19. data/docs/JsonapiCompliable/Extensions/ExtraAttribute.html +1 -1
  20. data/docs/JsonapiCompliable/Extensions.html +1 -1
  21. data/docs/JsonapiCompliable/Query.html +27 -21
  22. data/docs/JsonapiCompliable/Rails.html +1 -1
  23. data/docs/JsonapiCompliable/Resource.html +189 -572
  24. data/docs/JsonapiCompliable/Scope.html +1 -1
  25. data/docs/JsonapiCompliable/Scoping/Base.html +1 -1
  26. data/docs/JsonapiCompliable/Scoping/DefaultFilter.html +1 -1
  27. data/docs/JsonapiCompliable/Scoping/ExtraFields.html +1 -1
  28. data/docs/JsonapiCompliable/Scoping/Filter.html +1 -1
  29. data/docs/JsonapiCompliable/Scoping/Filterable.html +1 -1
  30. data/docs/JsonapiCompliable/Scoping/Paginate.html +1 -1
  31. data/docs/JsonapiCompliable/Scoping/Sort.html +1 -1
  32. data/docs/JsonapiCompliable/Scoping.html +1 -1
  33. data/docs/JsonapiCompliable/SerializableTempId.html +1 -1
  34. data/docs/JsonapiCompliable/Sideload.html +164 -384
  35. data/docs/JsonapiCompliable/Stats/DSL.html +1 -1
  36. data/docs/JsonapiCompliable/Stats/Payload.html +1 -1
  37. data/docs/JsonapiCompliable/Stats.html +1 -1
  38. data/docs/JsonapiCompliable/Util/FieldParams.html +1 -1
  39. data/docs/JsonapiCompliable/Util/Hash.html +1 -1
  40. data/docs/JsonapiCompliable/Util/IncludeParams.html +1 -1
  41. data/docs/JsonapiCompliable/Util/Persistence.html +1 -1
  42. data/docs/JsonapiCompliable/Util/RelationshipPayload.html +1 -1
  43. data/docs/JsonapiCompliable/Util/RenderOptions.html +1 -1
  44. data/docs/JsonapiCompliable/Util/ValidationResponse.html +1 -1
  45. data/docs/JsonapiCompliable/Util.html +1 -1
  46. data/docs/JsonapiCompliable.html +2 -2
  47. data/docs/_index.html +1 -1
  48. data/docs/file.README.html +1 -1
  49. data/docs/index.html +1 -1
  50. data/docs/method_list.html +191 -215
  51. data/docs/top-level-namespace.html +1 -1
  52. data/lib/jsonapi_compliable/base.rb +43 -1
  53. data/lib/jsonapi_compliable/query.rb +8 -5
  54. data/lib/jsonapi_compliable/resource.rb +2 -90
  55. data/lib/jsonapi_compliable/scope.rb +2 -4
  56. data/lib/jsonapi_compliable/sideload.rb +7 -59
  57. data/lib/jsonapi_compliable/version.rb +1 -1
  58. metadata +2 -2
@@ -137,6 +137,30 @@
137
137
  <p>Define your JSONAPI configuration.</p>
138
138
  </div></span>
139
139
 
140
+ </li>
141
+
142
+
143
+ <li class="public ">
144
+ <span class="summary_signature">
145
+
146
+ <a href="#sideload_whitelist-class_method" title="sideload_whitelist (class method)">.<strong>sideload_whitelist</strong>(hash) &#x21d2; Object </a>
147
+
148
+
149
+
150
+ </span>
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+ <span class="summary_desc"><div class='inline'>
161
+ <p>Set the sideload whitelist.</p>
162
+ </div></span>
163
+
140
164
  </li>
141
165
 
142
166
 
@@ -363,6 +387,28 @@ serialized parameters.</p>
363
387
  <p>Similar to <tt>render :json</tt> or <tt>render :jsonapi</tt>.</p>
364
388
  </div></span>
365
389
 
390
+ </li>
391
+
392
+
393
+ <li class="public ">
394
+ <span class="summary_signature">
395
+
396
+ <a href="#sideload_whitelist-instance_method" title="#sideload_whitelist (instance method)">#<strong>sideload_whitelist</strong> &#x21d2; Object </a>
397
+
398
+
399
+
400
+ </span>
401
+
402
+
403
+
404
+
405
+
406
+
407
+ <span class="private note title">private</span>
408
+
409
+
410
+ <span class="summary_desc"><div class='inline'></div></span>
411
+
366
412
  </li>
367
413
 
368
414
 
@@ -484,7 +530,6 @@ serialized parameters.</p>
484
530
  <pre class="lines">
485
531
 
486
532
 
487
- 44
488
533
  45
489
534
  46
490
535
  47
@@ -494,10 +539,11 @@ serialized parameters.</p>
494
539
  51
495
540
  52
496
541
  53
497
- 54</pre>
542
+ 54
543
+ 55</pre>
498
544
  </td>
499
545
  <td>
500
- <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 44</span>
546
+ <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 45</span>
501
547
 
502
548
  <span class='kw'>def</span> <span class='id identifier rubyid_jsonapi'>jsonapi</span><span class='lparen'>(</span><span class='id identifier rubyid_foo'>foo</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>bar</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>resource:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_blk'>blk</span><span class='rparen'>)</span>
503
549
  <span class='kw'>if</span> <span class='id identifier rubyid_resource'>resource</span>
@@ -513,6 +559,106 @@ serialized parameters.</p>
513
559
  </td>
514
560
  </tr>
515
561
  </table>
562
+ </div>
563
+
564
+ <div class="method_details ">
565
+ <h3 class="signature " id="sideload_whitelist-class_method">
566
+
567
+ .<strong>sideload_whitelist</strong>(hash) &#x21d2; <tt>Object</tt>
568
+
569
+
570
+
571
+
572
+
573
+ </h3><div class="docstring">
574
+ <div class="discussion">
575
+
576
+ <p>Set the sideload whitelist. You may want to omit sideloads for security or
577
+ performance reasons.</p>
578
+
579
+ <p>Uses JSONAPI::IncludeDirective from <a href="{http://jsonapi-rb.org" target="_parent" title="jsonapi-rb">jsonapi-rb</a>}</p>
580
+
581
+
582
+ </div>
583
+ </div>
584
+ <div class="tags">
585
+
586
+ <div class="examples">
587
+ <p class="tag_title">Examples:</p>
588
+
589
+
590
+ <p class="example_title"><div class='inline'>
591
+ <p>Whitelisting Relationships</p>
592
+ </div></p>
593
+
594
+ <pre class="example code"><code><span class='comment'># Given the following whitelist
595
+ </span><span class='kw'>class</span> <span class='const'>PostsController</span> <span class='op'>&lt;</span> <span class='const'>ApplicationResource</span>
596
+ <span class='id identifier rubyid_jsonapi'>jsonapi</span> <span class='label'>resource:</span> <span class='const'>MyResource</span>
597
+
598
+ <span class='id identifier rubyid_sideload_whitelist'>sideload_whitelist</span><span class='lparen'>(</span><span class='lbrace'>{</span>
599
+ <span class='label'>index:</span> <span class='lbracket'>[</span><span class='symbol'>:blog</span><span class='rbracket'>]</span><span class='comma'>,</span>
600
+ <span class='label'>show:</span> <span class='lbracket'>[</span><span class='symbol'>:blog</span><span class='comma'>,</span> <span class='lbrace'>{</span> <span class='label'>comments:</span> <span class='symbol'>:author</span> <span class='rbrace'>}</span><span class='rbracket'>]</span>
601
+ <span class='rbrace'>}</span><span class='rparen'>)</span>
602
+
603
+ <span class='comment'># ... code ...
604
+ </span><span class='kw'>end</span>
605
+
606
+ <span class='comment'># A request to sideload &#39;tags&#39;
607
+ </span><span class='comment'>#
608
+ </span><span class='comment'># GET /posts/1?include=tags
609
+ </span><span class='comment'>#
610
+ </span><span class='comment'># ...will silently fail.
611
+ </span><span class='comment'>#
612
+ </span><span class='comment'># A request for comments and tags:
613
+ </span><span class='comment'>#
614
+ </span><span class='comment'># GET /posts/1?include=tags,comments
615
+ </span><span class='comment'>#
616
+ </span><span class='comment'># ...will only sideload comments</span></code></pre>
617
+
618
+ </div>
619
+ <p class="tag_title">Parameters:</p>
620
+ <ul class="param">
621
+
622
+ <li>
623
+
624
+ <span class='name'>whitelist</span>
625
+
626
+
627
+ <span class='type'>(<tt>Hash</tt>, <tt>Array</tt>, <tt>Symbol</tt>)</span>
628
+
629
+
630
+
631
+ </li>
632
+
633
+ </ul>
634
+
635
+
636
+ <p class="tag_title">See Also:</p>
637
+ <ul class="see">
638
+
639
+ <li><span class='object_link'><a href="Query.html#include_hash-instance_method" title="JsonapiCompliable::Query#include_hash (method)">Query#include_hash</a></span></li>
640
+
641
+ </ul>
642
+
643
+ </div><table class="source_code">
644
+ <tr>
645
+ <td>
646
+ <pre class="lines">
647
+
648
+
649
+ 89
650
+ 90
651
+ 91</pre>
652
+ </td>
653
+ <td>
654
+ <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 89</span>
655
+
656
+ <span class='kw'>def</span> <span class='id identifier rubyid_sideload_whitelist'>sideload_whitelist</span><span class='lparen'>(</span><span class='id identifier rubyid_hash'>hash</span><span class='rparen'>)</span>
657
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid__sideload_whitelist'>_sideload_whitelist</span> <span class='op'>=</span> <span class='const'>JSONAPI</span><span class='op'>::</span><span class='const'>IncludeDirective</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_hash'>hash</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_hash'>to_hash</span>
658
+ <span class='kw'>end</span></pre>
659
+ </td>
660
+ </tr>
661
+ </table>
516
662
  </div>
517
663
 
518
664
  </div>
@@ -584,13 +730,13 @@ render jsonapi: foo, default_jsonapi_render_options</code></pre>
584
730
  <pre class="lines">
585
731
 
586
732
 
587
- 238
588
- 239
589
- 240
590
- 241</pre>
733
+ 280
734
+ 281
735
+ 282
736
+ 283</pre>
591
737
  </td>
592
738
  <td>
593
- <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 238</span>
739
+ <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 280</span>
594
740
 
595
741
  <span class='kw'>def</span> <span class='id identifier rubyid_default_jsonapi_render_options'>default_jsonapi_render_options</span>
596
742
  <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_tap'>tap</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_options'>options</span><span class='op'>|</span>
@@ -645,12 +791,12 @@ render jsonapi: foo, default_jsonapi_render_options</code></pre>
645
791
  <pre class="lines">
646
792
 
647
793
 
648
- 119
649
- 120
650
- 121</pre>
794
+ 161
795
+ 162
796
+ 163</pre>
651
797
  </td>
652
798
  <td>
653
- <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 119</span>
799
+ <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 161</span>
654
800
 
655
801
  <span class='kw'>def</span> <span class='id identifier rubyid_deserialized_params'>deserialized_params</span>
656
802
  <span class='ivar'>@deserialized_params</span> <span class='op'>||=</span> <span class='const'><span class='object_link'><a href="../JsonapiCompliable.html" title="JsonapiCompliable (module)">JsonapiCompliable</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Deserializer.html" title="JsonapiCompliable::Deserializer (class)">Deserializer</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Deserializer.html#initialize-instance_method" title="JsonapiCompliable::Deserializer#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='id identifier rubyid_request'>request</span><span class='period'>.</span><span class='id identifier rubyid_env'>env</span><span class='rparen'>)</span>
@@ -737,17 +883,17 @@ back the transaction.</p>
737
883
  <pre class="lines">
738
884
 
739
885
 
740
- 147
741
- 148
742
- 149
743
- 150
744
- 151
745
- 152
746
- 153
747
- 154</pre>
886
+ 189
887
+ 190
888
+ 191
889
+ 192
890
+ 193
891
+ 194
892
+ 195
893
+ 196</pre>
748
894
  </td>
749
895
  <td>
750
- <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 147</span>
896
+ <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 189</span>
751
897
 
752
898
  <span class='kw'>def</span> <span class='id identifier rubyid_jsonapi_create'>jsonapi_create</span>
753
899
  <span class='id identifier rubyid__persist'>_persist</span> <span class='kw'>do</span>
@@ -813,12 +959,12 @@ back the transaction.</p>
813
959
  <pre class="lines">
814
960
 
815
961
 
816
- 66
817
- 67
818
- 68</pre>
962
+ 108
963
+ 109
964
+ 110</pre>
819
965
  </td>
820
966
  <td>
821
- <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 66</span>
967
+ <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 108</span>
822
968
 
823
969
  <span class='kw'>def</span> <span class='id identifier rubyid_jsonapi_resource'>jsonapi_resource</span>
824
970
  <span class='ivar'>@jsonapi_resource</span> <span class='op'>||=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid__jsonapi_compliable'>_jsonapi_compliable</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
@@ -905,12 +1051,12 @@ back the transaction.</p>
905
1051
  <pre class="lines">
906
1052
 
907
1053
 
908
- 113
909
- 114
910
- 115</pre>
1054
+ 155
1055
+ 156
1056
+ 157</pre>
911
1057
  </td>
912
1058
  <td>
913
- <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 113</span>
1059
+ <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 155</span>
914
1060
 
915
1061
  <span class='kw'>def</span> <span class='id identifier rubyid_jsonapi_scope'>jsonapi_scope</span><span class='lparen'>(</span><span class='id identifier rubyid_scope'>scope</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
916
1062
  <span class='id identifier rubyid_jsonapi_resource'>jsonapi_resource</span><span class='period'>.</span><span class='id identifier rubyid_build_scope'>build_scope</span><span class='lparen'>(</span><span class='id identifier rubyid_scope'>scope</span><span class='comma'>,</span> <span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
@@ -993,17 +1139,17 @@ back the transaction.</p>
993
1139
  <pre class="lines">
994
1140
 
995
1141
 
996
- 178
997
- 179
998
- 180
999
- 181
1000
- 182
1001
- 183
1002
- 184
1003
- 185</pre>
1142
+ 220
1143
+ 221
1144
+ 222
1145
+ 223
1146
+ 224
1147
+ 225
1148
+ 226
1149
+ 227</pre>
1004
1150
  </td>
1005
1151
  <td>
1006
- <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 178</span>
1152
+ <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 220</span>
1007
1153
 
1008
1154
  <span class='kw'>def</span> <span class='id identifier rubyid_jsonapi_update'>jsonapi_update</span>
1009
1155
  <span class='id identifier rubyid__persist'>_persist</span> <span class='kw'>do</span>
@@ -1069,12 +1215,12 @@ back the transaction.</p>
1069
1215
  <pre class="lines">
1070
1216
 
1071
1217
 
1072
- 74
1073
- 75
1074
- 76</pre>
1218
+ 116
1219
+ 117
1220
+ 118</pre>
1075
1221
  </td>
1076
1222
  <td>
1077
- <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 74</span>
1223
+ <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 116</span>
1078
1224
 
1079
1225
  <span class='kw'>def</span> <span class='id identifier rubyid_query'>query</span>
1080
1226
  <span class='ivar'>@query</span> <span class='op'>||=</span> <span class='const'><span class='object_link'><a href="Query.html" title="JsonapiCompliable::Query (class)">Query</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Query.html#initialize-instance_method" title="JsonapiCompliable::Query#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_jsonapi_resource'>jsonapi_resource</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='rparen'>)</span>
@@ -1136,12 +1282,12 @@ resource</p>
1136
1282
  <pre class="lines">
1137
1283
 
1138
1284
 
1139
- 80
1140
- 81
1141
- 82</pre>
1285
+ 122
1286
+ 123
1287
+ 124</pre>
1142
1288
  </td>
1143
1289
  <td>
1144
- <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 80</span>
1290
+ <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 122</span>
1145
1291
 
1146
1292
  <span class='kw'>def</span> <span class='id identifier rubyid_query_hash'>query_hash</span>
1147
1293
  <span class='ivar'>@query_hash</span> <span class='op'>||=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_to_hash'>to_hash</span><span class='lbracket'>[</span><span class='id identifier rubyid_jsonapi_resource'>jsonapi_resource</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span><span class='rbracket'>]</span>
@@ -1283,17 +1429,17 @@ avoid this, pass <tt>scope: false</tt></p>
1283
1429
  <pre class="lines">
1284
1430
 
1285
1431
 
1286
- 218
1287
- 219
1288
- 220
1289
- 221
1290
- 222
1291
- 223
1292
- 224
1293
- 225</pre>
1432
+ 260
1433
+ 261
1434
+ 262
1435
+ 263
1436
+ 264
1437
+ 265
1438
+ 266
1439
+ 267</pre>
1294
1440
  </td>
1295
1441
  <td>
1296
- <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 218</span>
1442
+ <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 260</span>
1297
1443
 
1298
1444
  <span class='kw'>def</span> <span class='id identifier rubyid_render_jsonapi'>render_jsonapi</span><span class='lparen'>(</span><span class='id identifier rubyid_scope'>scope</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
1299
1445
  <span class='id identifier rubyid_scope'>scope</span> <span class='op'>=</span> <span class='id identifier rubyid_jsonapi_scope'>jsonapi_scope</span><span class='lparen'>(</span><span class='id identifier rubyid_scope'>scope</span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:scope</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='kw'>false</span> <span class='op'>||</span> <span class='id identifier rubyid_scope'>scope</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../JsonapiCompliable.html" title="JsonapiCompliable (module)">JsonapiCompliable</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Scope.html" title="JsonapiCompliable::Scope (class)">Scope</a></span></span><span class='rparen'>)</span>
@@ -1306,6 +1452,187 @@ avoid this, pass <tt>scope: false</tt></p>
1306
1452
  </td>
1307
1453
  </tr>
1308
1454
  </table>
1455
+ </div>
1456
+
1457
+ <div class="method_details ">
1458
+ <h3 class="signature " id="sideload_whitelist-instance_method">
1459
+
1460
+ #<strong>sideload_whitelist</strong> &#x21d2; <tt>Object</tt>
1461
+
1462
+
1463
+
1464
+
1465
+
1466
+ </h3><div class="docstring">
1467
+ <div class="discussion">
1468
+ <p class="note private">
1469
+ <strong>This method is part of a private API.</strong>
1470
+ You should avoid using this method if possible, as it may be removed or be changed in the future.
1471
+ </p>
1472
+
1473
+
1474
+ </div>
1475
+ </div>
1476
+ <div class="tags">
1477
+
1478
+
1479
+ </div><table class="source_code">
1480
+ <tr>
1481
+ <td>
1482
+ <pre class="lines">
1483
+
1484
+
1485
+ 21
1486
+ 22
1487
+ 23
1488
+ 24
1489
+ 25
1490
+ 26
1491
+ 27
1492
+ 28
1493
+ 29
1494
+ 30
1495
+ 31
1496
+ 32
1497
+ 33
1498
+ 34
1499
+ 35
1500
+ 36
1501
+ 37
1502
+ 38
1503
+ 39
1504
+ 40
1505
+ 41
1506
+ 42
1507
+ 43
1508
+ 44
1509
+ 45
1510
+ 46
1511
+ 47
1512
+ 48
1513
+ 49
1514
+ 50
1515
+ 51
1516
+ 52
1517
+ 53
1518
+ 54
1519
+ 55
1520
+ 56
1521
+ 57
1522
+ 58
1523
+ 59
1524
+ 60
1525
+ 61
1526
+ 62
1527
+ 63
1528
+ 64
1529
+ 65
1530
+ 66
1531
+ 67
1532
+ 68
1533
+ 69
1534
+ 70
1535
+ 71
1536
+ 72
1537
+ 73
1538
+ 74
1539
+ 75
1540
+ 76
1541
+ 77
1542
+ 78
1543
+ 79
1544
+ 80
1545
+ 81
1546
+ 82
1547
+ 83
1548
+ 84
1549
+ 85
1550
+ 86
1551
+ 87
1552
+ 88
1553
+ 89
1554
+ 90
1555
+ 91
1556
+ 92</pre>
1557
+ </td>
1558
+ <td>
1559
+ <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 21</span>
1560
+
1561
+ <span class='kw'>module</span> <span class='const'>ClassMethods</span>
1562
+ <span class='comment'># Define your JSONAPI configuration
1563
+ </span> <span class='comment'>#
1564
+ </span> <span class='comment'># @example Inline Resource
1565
+ </span> <span class='comment'># # &#39;Quick and Dirty&#39; solution that does not require a separate
1566
+ </span> <span class='comment'># # Resource object
1567
+ </span> <span class='comment'># class PostsController &lt; ApplicationController
1568
+ </span> <span class='comment'># jsonapi do
1569
+ </span> <span class='comment'># type :posts
1570
+ </span> <span class='comment'># use_adapter JsonapiCompliable::Adapters::ActiveRecord
1571
+ </span> <span class='comment'>#
1572
+ </span> <span class='comment'># allow_filter :title
1573
+ </span> <span class='comment'># end
1574
+ </span> <span class='comment'># end
1575
+ </span> <span class='comment'>#
1576
+ </span> <span class='comment'># @example Resource Class (preferred)
1577
+ </span> <span class='comment'># # Make code reusable by encapsulating it in a Resource class
1578
+ </span> <span class='comment'># class PostsController &lt; ApplicationController
1579
+ </span> <span class='comment'># jsonapi resource: PostResource
1580
+ </span> <span class='comment'># end
1581
+ </span> <span class='comment'>#
1582
+ </span> <span class='comment'># @see Resource
1583
+ </span> <span class='comment'># @param resource [Resource] the Resource class associated to this endpoint
1584
+ </span> <span class='comment'># @return [void]
1585
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_jsonapi'>jsonapi</span><span class='lparen'>(</span><span class='id identifier rubyid_foo'>foo</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>bar</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>resource:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_blk'>blk</span><span class='rparen'>)</span>
1586
+ <span class='kw'>if</span> <span class='id identifier rubyid_resource'>resource</span>
1587
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid__jsonapi_compliable'>_jsonapi_compliable</span> <span class='op'>=</span> <span class='id identifier rubyid_resource'>resource</span>
1588
+ <span class='kw'>else</span>
1589
+ <span class='kw'>if</span> <span class='op'>!</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid__jsonapi_compliable'>_jsonapi_compliable</span>
1590
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid__jsonapi_compliable'>_jsonapi_compliable</span> <span class='op'>=</span> <span class='const'>Class</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../JsonapiCompliable.html" title="JsonapiCompliable (module)">JsonapiCompliable</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Resource.html" title="JsonapiCompliable::Resource (class)">Resource</a></span></span><span class='rparen'>)</span>
1591
+ <span class='kw'>end</span>
1592
+ <span class='kw'>end</span>
1593
+
1594
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid__jsonapi_compliable'>_jsonapi_compliable</span><span class='period'>.</span><span class='id identifier rubyid_class_eval'>class_eval</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_blk'>blk</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_blk'>blk</span>
1595
+ <span class='kw'>end</span>
1596
+
1597
+ <span class='comment'># Set the sideload whitelist. You may want to omit sideloads for
1598
+ </span> <span class='comment'># security or performance reasons.
1599
+ </span> <span class='comment'>#
1600
+ </span> <span class='comment'># Uses JSONAPI::IncludeDirective from {{http://jsonapi-rb.org jsonapi-rb}}
1601
+ </span> <span class='comment'>#
1602
+ </span> <span class='comment'># @example Whitelisting Relationships
1603
+ </span> <span class='comment'># # Given the following whitelist
1604
+ </span> <span class='comment'># class PostsController &lt; ApplicationResource
1605
+ </span> <span class='comment'># jsonapi resource: MyResource
1606
+ </span> <span class='comment'>#
1607
+ </span> <span class='comment'># sideload_whitelist({
1608
+ </span> <span class='comment'># index: [:blog],
1609
+ </span> <span class='comment'># show: [:blog, { comments: :author }]
1610
+ </span> <span class='comment'># })
1611
+ </span> <span class='comment'>#
1612
+ </span> <span class='comment'># # ... code ...
1613
+ </span> <span class='comment'># end
1614
+ </span> <span class='comment'>#
1615
+ </span> <span class='comment'># # A request to sideload &#39;tags&#39;
1616
+ </span> <span class='comment'># #
1617
+ </span> <span class='comment'># # GET /posts/1?include=tags
1618
+ </span> <span class='comment'># #
1619
+ </span> <span class='comment'># # ...will silently fail.
1620
+ </span> <span class='comment'># #
1621
+ </span> <span class='comment'># # A request for comments and tags:
1622
+ </span> <span class='comment'># #
1623
+ </span> <span class='comment'># # GET /posts/1?include=tags,comments
1624
+ </span> <span class='comment'># #
1625
+ </span> <span class='comment'># # ...will only sideload comments
1626
+ </span> <span class='comment'>#
1627
+ </span> <span class='comment'># @param [Hash, Array, Symbol] whitelist
1628
+ </span> <span class='comment'># @see Query#include_hash
1629
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_sideload_whitelist'>sideload_whitelist</span><span class='lparen'>(</span><span class='id identifier rubyid_hash'>hash</span><span class='rparen'>)</span>
1630
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid__sideload_whitelist'>_sideload_whitelist</span> <span class='op'>=</span> <span class='const'>JSONAPI</span><span class='op'>::</span><span class='const'>IncludeDirective</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_hash'>hash</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_hash'>to_hash</span>
1631
+ <span class='kw'>end</span>
1632
+ <span class='kw'>end</span></pre>
1633
+ </td>
1634
+ </tr>
1635
+ </table>
1309
1636
  </div>
1310
1637
 
1311
1638
  <div class="method_details ">
@@ -1357,14 +1684,14 @@ Helpful for easy-access to things like the current user.</p>
1357
1684
  <pre class="lines">
1358
1685
 
1359
1686
 
1360
- 90
1361
- 91
1362
- 92
1363
- 93
1364
- 94</pre>
1687
+ 132
1688
+ 133
1689
+ 134
1690
+ 135
1691
+ 136</pre>
1365
1692
  </td>
1366
1693
  <td>
1367
- <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 90</span>
1694
+ <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 132</span>
1368
1695
 
1369
1696
  <span class='kw'>def</span> <span class='id identifier rubyid_wrap_context'>wrap_context</span>
1370
1697
  <span class='id identifier rubyid_jsonapi_resource'>jsonapi_resource</span><span class='period'>.</span><span class='id identifier rubyid_with_context'>with_context</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_action_name'>action_name</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span><span class='rparen'>)</span> <span class='kw'>do</span>
@@ -1381,7 +1708,7 @@ Helpful for easy-access to things like the current user.</p>
1381
1708
  </div>
1382
1709
 
1383
1710
  <div id="footer">
1384
- Generated on Mon Oct 2 09:38:50 2017 by
1711
+ Generated on Tue Oct 3 09:22:25 2017 by
1385
1712
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1386
1713
  0.9.9 (ruby-2.3.0).
1387
1714
  </div>
@@ -892,7 +892,7 @@ create/update/destroy/disassociate. Based on the request env or the
892
892
  </div>
893
893
 
894
894
  <div id="footer">
895
- Generated on Mon Oct 2 09:38:51 2017 by
895
+ Generated on Tue Oct 3 09:22:26 2017 by
896
896
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
897
897
  0.9.9 (ruby-2.3.0).
898
898
  </div>
@@ -114,7 +114,7 @@
114
114
  </div>
115
115
 
116
116
  <div id="footer">
117
- Generated on Mon Oct 2 09:38:50 2017 by
117
+ Generated on Tue Oct 3 09:22:25 2017 by
118
118
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
119
119
  0.9.9 (ruby-2.3.0).
120
120
  </div>
@@ -256,7 +256,7 @@
256
256
  </div>
257
257
 
258
258
  <div id="footer">
259
- Generated on Mon Oct 2 09:38:50 2017 by
259
+ Generated on Tue Oct 3 09:22:25 2017 by
260
260
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
261
261
  0.9.9 (ruby-2.3.0).
262
262
  </div>
@@ -254,7 +254,7 @@
254
254
  </div>
255
255
 
256
256
  <div id="footer">
257
- Generated on Mon Oct 2 09:38:50 2017 by
257
+ Generated on Tue Oct 3 09:22:25 2017 by
258
258
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
259
259
  0.9.9 (ruby-2.3.0).
260
260
  </div>
@@ -114,7 +114,7 @@
114
114
  </div>
115
115
 
116
116
  <div id="footer">
117
- Generated on Mon Oct 2 09:38:50 2017 by
117
+ Generated on Tue Oct 3 09:22:25 2017 by
118
118
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
119
119
  0.9.9 (ruby-2.3.0).
120
120
  </div>
@@ -105,7 +105,7 @@
105
105
  </div>
106
106
 
107
107
  <div id="footer">
108
- Generated on Mon Oct 2 09:38:50 2017 by
108
+ Generated on Tue Oct 3 09:22:25 2017 by
109
109
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
110
110
  0.9.9 (ruby-2.3.0).
111
111
  </div>