json_api_params 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0c2c783247b4756476bf91cb4d7676974849071d
4
- data.tar.gz: dc9a92a4402badb0b9b2640860de8f4ed2b010a1
3
+ metadata.gz: 52862200b62f7fba69587fbf5b0fc50465e03696
4
+ data.tar.gz: 79299c35029cc6c9e475d3d2ccf168b36ca57ce7
5
5
  SHA512:
6
- metadata.gz: 7cda15b8f44296bb391c95cc325a9c2dcbd4b78edd626cfbe023ba0907a7e2ded7b9b1602110cf09e3ded7a44455d99299b856e32aa3ea61869397243eb3ad95
7
- data.tar.gz: b5be32778ee91c86538e6ff53a97a9eaa0921ef3c10f3174551d97f4ceac686ee04fc4b0159ce6728e85acc688810e34ac57eb3e395fc25d8a3a5f24e75e785e
6
+ metadata.gz: 3f873e5ba02d5653b50e8054a5fcc3beb037cc0af75a7a863853460ac68418de6f5508bb00c130f51a1f8fe9e5adb283ab4942952724d34c026c7defc18d3d1e
7
+ data.tar.gz: 99dc948684ceb0ed8c671a12d4112224761fe7ca9ad8137e51c1a3d7e9e617ba05c6aaf0974b614c88fe6edc6d821302c88d5ba5c6bcc4b421f2c8af7f709452
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # JsonApiParams
2
2
 
3
- Extracts JSON API params to old-fashioned way.
3
+ Extracts JSON API (http://jsonapi.org/) params to old-fashioned way.
4
4
 
5
5
  ## Installation
6
6
 
@@ -20,6 +20,48 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
+ In a case with the following request payload:
24
+
25
+ ``` json
26
+ {
27
+ "data": {
28
+ "attributes": {
29
+ "x-y": 1,
30
+ "z": 2
31
+ },
32
+ "relationships": {
33
+ "foo-bar": {
34
+ "data": {
35
+ "id": 42
36
+ }
37
+ },
38
+ "baz": {
39
+ "data": null
40
+ },
41
+ "qux": {
42
+ "data": [
43
+ {
44
+ "id": 3
45
+ },
46
+ {
47
+ "id": 4
48
+ }
49
+ ]
50
+ }
51
+ }
52
+ }
53
+ }
54
+ ```
55
+
56
+ `ActionController::Parameters#extract_json_api` returns the following structure.
57
+
58
+ ``` ruby
59
+ params.extract_json_api
60
+ #=> {"x_y"=>1, "z"=>2, "foo_bar_id"=>42, "baz_id"=>nil, "qux_ids"=>[3, 4]}
61
+ ```
62
+
63
+ You can use Strong Parameters as usual.
64
+
23
65
  ``` ruby
24
66
  # app/controllers/users_controller.rb
25
67
 
@@ -1,3 +1,3 @@
1
1
  module JsonApiParams
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
@@ -9,7 +9,13 @@ require 'active_support/core_ext/string/inflections'
9
9
 
10
10
  class ActionController::Parameters
11
11
  def extract_json_api
12
- data = fetch(:data)
12
+ case data = fetch(:data)
13
+ when Array
14
+ return data.map {|_data|
15
+ self.class.new(data: _data).extract_json_api
16
+ }
17
+ end
18
+
13
19
  relationships = data.fetch(:relationships) { self.class.new }
14
20
 
15
21
  attributes = self.class[*data.fetch(:attributes) { Hash.new }.flat_map {|key, value|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_api_params
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keita Urashima
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-10-10 00:00:00.000000000 Z
11
+ date: 2015-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack