json_key_transformer_middleware 0.1.2 → 0.1.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1b1377f4253616314ccacfb6a0899df100298383
4
- data.tar.gz: d3c150b7313b1cbfb06b016becb1f053900c0c6d
3
+ metadata.gz: 77715b1456ce9b3198f5532abdf6d48841756382
4
+ data.tar.gz: 0a5490b1e2a8acbc377f13b6f193d942859ee472
5
5
  SHA512:
6
- metadata.gz: 789040f09f0dea979d9b4116fc2a1a34a7d84ec9696fe5ba14c169619e8ff89f68008e58dac809cfc7eda79779755e9fe0efaded70ab746115550fde5ceef823
7
- data.tar.gz: 368d7bbc65d023fa4c4e685884cea3e370f5264c42aa033329c35aa1910faaacb84de39eba25b85a056522f46130b9030baad481b2b6786674df1f4e413ad8c8
6
+ metadata.gz: 7f32752b22f280e93d4bef5269943c6ce524fbae82120e8c86d4c25ac098b2231bf2d486cd8ac2fc866bdf87fe445496cdfc8e0d4229d8f3d8fa4db6fdbaed35
7
+ data.tar.gz: 70ce636d6f001a75c80c681db263dff9c4bcbb5a242e6ced66d4ead38b2565aff904d2889f96e6566ef18ee4700499e2ef30d4b4b035dffd81970a1c31e91c55
@@ -12,9 +12,13 @@ module JsonKeyTransformerMiddleware
12
12
  status, headers, body = @app.call(env)
13
13
 
14
14
  new_body = body.each.map do |body_part|
15
- Oj.dump(
16
- deep_transform_hash_keys(
17
- Oj.load(body_part), :underscore_to_camel))
15
+ begin
16
+ Oj.dump(
17
+ deep_transform_hash_keys(
18
+ Oj.load(body_part), :underscore_to_camel))
19
+ rescue
20
+ body_part
21
+ end
18
22
  end
19
23
 
20
24
  [status, headers, new_body]
data/readme.md CHANGED
@@ -22,6 +22,41 @@ Or, install it directly:
22
22
 
23
23
  Simply including the gem in the Gemfile for a Rails application will initialize the rack middleware which transforms incoming and outgoing JSON keys.
24
24
 
25
+ The purpose of this gem is to:
26
+
27
+ 1. Transform incoming parameter names from JSON-style `camelCase` to Ruby-style `snake_case`. Clients send `camelCase` parameters, you work with `snake_case` params in your Rails controllers.
28
+ 1. Transform outgoing parameter names from Ruby-style `snake_case` to JSON-style `camelCase`. When rendering a JSON response, you send a `snake_case` hash response, the client will receive a `camelCase` response.
29
+
30
+ In both cases the transformation process walks the entire incoming and outgoing data structure.
31
+
32
+ *Incoming transformation example*
33
+
34
+ From (JSON):
35
+
36
+ ```
37
+ {"paramName": "value", "paramName2": [{"paramName3": "value"}]}
38
+ ```
39
+
40
+ To (Rails params):
41
+
42
+ ```
43
+ {"param_name" => "value", "param_name2" => [{"param_name3" => "value"}]}
44
+ ```
45
+
46
+ *Outgoing transformation example*
47
+
48
+ From (Rails response):
49
+
50
+ ```
51
+ {"param_name" => "value", "param_name2" => [{"param_name3" => "value"}]}
52
+ ```
53
+
54
+ To (JSON):
55
+
56
+ ```
57
+ {"paramName": "value", "paramName2": [{"paramName3": "value"}]}
58
+ ```
59
+
25
60
  ## Notes
26
61
 
27
62
  This gem serves a very specific purpose. As such, it only targets a specific version of Rails. Over time more versions of Rails may be supported.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_key_transformer_middleware
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Rood
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-10 00:00:00.000000000 Z
11
+ date: 2016-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -42,14 +42,14 @@ dependencies:
42
42
  name: rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 5.0.0.beta1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 5.0.0.beta1
55
55
  description: Incoming JSON keys are transformed from camelCase to snake_case. Outgoing