jsonapi_compliable 0.9.2 → 0.10.0

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