faraday_middleware-jsons 0.1.0 → 0.2.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +17 -2
- data/VERSION +1 -1
- data/lib/faraday_middleware/jsons.rb +5 -1
- data/lib/faraday_middleware/jsons/response/decoder.rb +38 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48008ac826dd56410a97b505cc303db75d70fb73
|
4
|
+
data.tar.gz: e2871f34f3b3063d6665f65985ed6408418c99ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8a4f6db4ae060f08c866a7b08fe389581561ed2f764491c8b632e580060f4f7fd33e427172a01a3ec3d03fd68c504dd6db787314a1be7d4b088c8b0b9664b2d
|
7
|
+
data.tar.gz: 2fb72595e7f15fc30b38da89661397b8fdc3d565f9f3ade66c15ad32b84dc846aa3bc8f5b78c9b3b75a746563be927b98b9601c04d38c4902a87f6d718ae7095
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -32,7 +32,7 @@ end
|
|
32
32
|
|
33
33
|
### Request Middleware
|
34
34
|
|
35
|
-
####
|
35
|
+
#### jsons
|
36
36
|
|
37
37
|
Serialize as json if Content-Type matched.
|
38
38
|
Defalut allows to searialize many variety of json type such as patch+json, hal+json.
|
@@ -41,9 +41,24 @@ Options:
|
|
41
41
|
|
42
42
|
| key | description | default |
|
43
43
|
|-----|-------------|---------|
|
44
|
-
| :content_type | To be compared with Content-Type using === |
|
44
|
+
| :content_type | To be compared with Content-Type using === | /^application\/(.*\+)?json/ |
|
45
45
|
| :pretty | To be passed to MultiJson | false |
|
46
46
|
|
47
|
+
### Response Middleware
|
48
|
+
|
49
|
+
#### jsons
|
50
|
+
|
51
|
+
Parse json if Content-Type matched.
|
52
|
+
Defalut allows to load many variety of json type such as patch+json, hal+json.
|
53
|
+
|
54
|
+
Options:
|
55
|
+
|
56
|
+
| key | description | default |
|
57
|
+
|-----|-------------|---------|
|
58
|
+
| :content_type | To be compared with Content-Type using === | /^application\/(.*\+)?json/ |
|
59
|
+
| :symbolize_keys | To be passed to MultiJson | false |
|
60
|
+
| :raise_error | When parse json failed it raise error. If this is false, body ramains as is | false |
|
61
|
+
|
47
62
|
## Contributing
|
48
63
|
|
49
64
|
1. Fork it ( https://github.com/okitan/faraday-middleware-jsons/fork )
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
@@ -5,10 +5,14 @@ module FaradayMiddleware
|
|
5
5
|
module Jsons
|
6
6
|
# basic json support
|
7
7
|
require "faraday_middleware/jsons/request/encoder"
|
8
|
-
|
8
|
+
require "faraday_middleware/jsons/response/decoder"
|
9
9
|
|
10
10
|
Faraday::Request.register_middleware(
|
11
11
|
jsons: -> { ::FaradayMiddleware::Jsons::Encoder }
|
12
12
|
)
|
13
|
+
|
14
|
+
Faraday::Response.register_middleware(
|
15
|
+
jsons: -> { ::FaradayMiddleware::Jsons::Decoder }
|
16
|
+
)
|
13
17
|
end
|
14
18
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module FaradayMiddleware::Jsons
|
2
|
+
class Decoder < Faraday::Middleware
|
3
|
+
def initialize(app, options = {})
|
4
|
+
super(app)
|
5
|
+
|
6
|
+
@raise_error = options[:raise_error] || false
|
7
|
+
@symbolize_keys = options[:symbolize_keys] || false
|
8
|
+
@content_type = options[:content_type] || %r!^application/(.*\+)?json!
|
9
|
+
end
|
10
|
+
|
11
|
+
def call(env)
|
12
|
+
@app.call(env).on_complete do |env|
|
13
|
+
if has_body?(env) && match_content_type?(env)
|
14
|
+
env[:body] = parse(env[:body])
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def parse(body)
|
20
|
+
begin
|
21
|
+
::MultiJson.load(body, symbolize_keys: @symbolize_keys)
|
22
|
+
rescue => e
|
23
|
+
raise e if @raise_error
|
24
|
+
body
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
protected
|
29
|
+
def match_content_type?(env)
|
30
|
+
content_type = env[:response_headers]["Content-Type"]
|
31
|
+
@content_type === content_type
|
32
|
+
end
|
33
|
+
|
34
|
+
def has_body?(env)
|
35
|
+
(body = env[:body]) && !body.empty?
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: faraday_middleware-jsons
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- okitan
|
@@ -104,6 +104,7 @@ files:
|
|
104
104
|
- ".gitignore"
|
105
105
|
- ".rspec"
|
106
106
|
- ".travis.yml"
|
107
|
+
- CHANGELOG.md
|
107
108
|
- CODE_OF_CONDUCT.md
|
108
109
|
- Gemfile
|
109
110
|
- Guardfile
|
@@ -116,6 +117,7 @@ files:
|
|
116
117
|
- faraday_middleware-jsons.gemspec
|
117
118
|
- lib/faraday_middleware/jsons.rb
|
118
119
|
- lib/faraday_middleware/jsons/request/encoder.rb
|
120
|
+
- lib/faraday_middleware/jsons/response/decoder.rb
|
119
121
|
homepage: https://github.com/okitan/faraday_middleware-jsons
|
120
122
|
licenses:
|
121
123
|
- MIT
|