faraday_middleware 1.1.0 → 1.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
  SHA256:
3
- metadata.gz: 8b061911e8925a657ce571d5d3a096e6a9b43e8abcca0bec121fc81edb3b65c7
4
- data.tar.gz: 4722349158a61b9ee4789fc1046596ac80a44a7dd76eba178cb32330a5583a9b
3
+ metadata.gz: 7b8d5f2f821f7c0f8ed6326ad5e93dbc2865a84544cf2974b707b63afe9b13bd
4
+ data.tar.gz: a0ca51cea4bab75193f38f8bcaa1cd62058137b4bdb9002b97fb6a9271bd25a8
5
5
  SHA512:
6
- metadata.gz: 3d331ca5a71fda7702da83967033355c6ad896ea6026af78e248bf21c027a7f4287ab117ae81cb9dad0c0dc2d50eaaba1ab1a02f6a54a15436970e9c4232306f
7
- data.tar.gz: 49b8a45c1aa7e06764bc5433b83f469544c509c7c372bc986dadd497dd987054d5e02160d5019679b23acd068b32bd7c86c09498f2e29b9ccdca6376b316f634
6
+ metadata.gz: 774928e8114a49d941e8b8863ba874395a8c3d1d57b17f7b813e0f5cbccb7133197d11013338780712c9b49868a9fe8e476fee8ade2f0065d9d188e1ae0f1ab9
7
+ data.tar.gz: 33ff16c6a46beeb4fd2580729559f0558802c909191faf800a79a89cb0fdf9893a424489aeffc2dd8089cbf91328a8f57a4ecbf0ef300b067663d74a7e733815
data/README.md CHANGED
@@ -1,12 +1,25 @@
1
1
  Faraday Middleware
2
2
  ==================
3
- [![Gem Version](https://badge.fury.io/rb/faraday_middleware.svg)](https://rubygems.org/gems/faraday_middleware)
4
- ![GitHub Actions CI](https://github.com/lostisland/faraday_middleware/workflows/CI/badge.svg)
3
+ <a href="https://badge.fury.io/rb/faraday_middleware"><img src="https://badge.fury.io/rb/faraday_middleware@2x.png" alt="Gem Version" height="20"></a>
4
+ [![CI](https://github.com/lostisland/faraday_middleware/actions/workflows/ci.yml/badge.svg)](https://github.com/lostisland/faraday_middleware/actions/workflows/ci.yml)
5
5
 
6
6
  A collection of useful [Faraday][] middleware. [See the documentation][docs].
7
7
 
8
8
  gem install faraday_middleware
9
9
 
10
+ ## ⚠️ DEPRECATION WARNING ⚠️
11
+
12
+ As highlighted in Faraday's [UPGRADING](https://github.com/lostisland/faraday/blob/main/UPGRADING.md) guide, `faraday_middleware` is DEPRECATED, and will not be updated to support Faraday 2.0.
13
+ If you rely on `faraday_middleware` in your project and would like to support Faraday 2.0:
14
+ * The `json` middleware (request and response) are now both bundled with Faraday 🙌
15
+ * The `instrumentation` middleware is bundled with Faraday
16
+ * All other middlewares, they'll be re-released as independent gems compatible with both Faraday v1 and v2, look for [`awesome-faraday`](https://github.com/lostisland/awesome-faraday)
17
+
18
+ Most of the middlewares are up for adoption, contributors that would like to maintain them.
19
+ If you'd like to maintain any middleware, have any question or need any help, we're here!
20
+ Please reach out opening an issue or a discussion.
21
+
22
+
10
23
  Dependencies
11
24
  ------------
12
25
 
@@ -27,14 +27,16 @@ module FaradayMiddleware
27
27
  # cache - An object that responds to read and write (default: nil).
28
28
  # options - An options Hash (default: {}):
29
29
  # :ignore_params - String name or Array names of query
30
- # params that should be ignored when forming
31
- # the cache key (default: []).
30
+ # params that should be ignored when forming
31
+ # the cache key (default: []).
32
32
  # :write_options - Hash of settings that should be passed as the
33
- # third options parameter to the cache's #write
34
- # method. If not specified, no options parameter
35
- # will be passed.
33
+ # third options parameter to the cache's #write
34
+ # method. If not specified, no options parameter
35
+ # will be passed.
36
36
  # :full_key - Boolean - use full URL as cache key:
37
- # (url.host + url.request_uri)
37
+ # (url.host + url.request_uri)
38
+ # :status_codes - Array of http status code to be cache
39
+ # (default: CACHEABLE_STATUS_CODE)
38
40
  #
39
41
  # Yields if no cache is given. The block should return a cache object.
40
42
  def initialize(app, cache = nil, options = {})
@@ -86,6 +88,13 @@ module FaradayMiddleware
86
88
  @full_key ||= @options[:full_key]
87
89
  end
88
90
 
91
+ def custom_status_codes
92
+ @custom_status_codes ||= begin
93
+ codes = CACHEABLE_STATUS_CODES & Array(@options[:status_codes]).map(&:to_i)
94
+ codes.any? ? codes : CACHEABLE_STATUS_CODES
95
+ end
96
+ end
97
+
89
98
  def cache_on_complete(env)
90
99
  key = cache_key(env)
91
100
  if (cached_response = cache.read(key))
@@ -101,7 +110,7 @@ module FaradayMiddleware
101
110
  end
102
111
 
103
112
  def store_response_in_cache(key, response)
104
- return unless CACHEABLE_STATUS_CODES.include?(response.status)
113
+ return unless custom_status_codes.include?(response.status)
105
114
 
106
115
  if @options[:write_options]
107
116
  cache.write(key, response, @options[:write_options])
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Main FaradayMiddleware module.
4
4
  module FaradayMiddleware
5
- VERSION = '1.1.0' unless defined?(FaradayMiddleware::VERSION)
5
+ VERSION = '1.2.1' unless defined?(FaradayMiddleware::VERSION)
6
6
  end
@@ -27,13 +27,11 @@ module FaradayMiddleware
27
27
  Faraday::Request.register_middleware \
28
28
  oauth: -> { OAuth },
29
29
  oauth2: -> { OAuth2 },
30
- json: -> { EncodeJson },
31
30
  method_override: -> { MethodOverride }
32
31
 
33
32
  Faraday::Response.register_middleware \
34
33
  mashify: -> { Mashify },
35
34
  rashify: -> { Rashify },
36
- json: -> { ParseJson },
37
35
  json_fix: -> { ParseJson::MimeTypeFix },
38
36
  xml: -> { ParseXml },
39
37
  marshal: -> { ParseMarshal },
@@ -46,6 +44,13 @@ module FaradayMiddleware
46
44
  Faraday::Middleware.register_middleware \
47
45
  instrumentation: -> { Instrumentation },
48
46
  gzip: -> { Gzip }
47
+
48
+ # The request/reponse JSON middleware is included in Faraday since
49
+ # version 1.10.0, so we only register the middleware if it's not already.
50
+ if Gem::Version.new(Faraday::VERSION) < Gem::Version.new('1.10.0')
51
+ Faraday::Request.register_middleware(json: -> { EncodeJson })
52
+ Faraday::Response.register_middleware(json: -> { ParseJson })
53
+ end
49
54
  end
50
55
  end
51
56
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday_middleware
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Michaels-Ober
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-07-31 00:00:00.000000000 Z
12
+ date: 2024-09-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -76,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
78
  requirements: []
79
- rubygems_version: 3.0.3.1
79
+ rubygems_version: 3.1.6
80
80
  signing_key:
81
81
  specification_version: 4
82
82
  summary: Various middleware for Faraday