faraday_middleware 1.0.0 → 1.2.0

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: f76d03406442ddda70b51f788761197c2c78073134a684acf4a99abf24f03eb5
4
- data.tar.gz: 0e2f92c6ea632aae478af7787dfbfc83765f80bbc78670be7e0e6d1b4706d721
3
+ metadata.gz: b9533a5d53e299a95e8b2aa19d277ac32ed800930c0abd4d92c67f025c98101d
4
+ data.tar.gz: 7261d4f25c4e0edeaaba0718947af74439d2fef8a114278a74f8de63f0f6c575
5
5
  SHA512:
6
- metadata.gz: 6b4c9ac7430a3adca03f1911293ed6563be4d189b16b27d9096e77b6aae29c5cd634e0daf1667b69c222e427386da67be00e8eefbb9f0aeed749b146d1bc5187
7
- data.tar.gz: 8959ff3fc916216ba8cf2ef713f140a77400ca74b200e703557f2b09a091c40bdfc62e9457e956ce95cc7a99c0060d8e93407d77158e28a174f16d66a5ca3b74
6
+ metadata.gz: 9ae2e4ea996bb4a2ad2762a7c0812c8734879205adb05eb88aed062f0be24b26fa18de82e6cc33c7c86dfc8f7c4fa8694522732c457643c8a4d3991e50ac095a
7
+ data.tar.gz: 512f5e9888e8adf5ac0d93c501470028079b463e407697353d55ef603b3a2590f46b9a6530a0a688a54e391fe9033302551f133b6d216281bf01c451e1a73f85
data/README.md CHANGED
@@ -2,7 +2,6 @@ Faraday Middleware
2
2
  ==================
3
3
  [![Gem Version](https://badge.fury.io/rb/faraday_middleware.svg)](https://rubygems.org/gems/faraday_middleware)
4
4
  ![GitHub Actions CI](https://github.com/lostisland/faraday_middleware/workflows/CI/badge.svg)
5
- [![Maintainability](https://api.codeclimate.com/v1/badges/a971ee5025b269c39d93/maintainability)](https://codeclimate.com/github/lostisland/faraday_middleware/maintainability)
6
5
 
7
6
  A collection of useful [Faraday][] middleware. [See the documentation][docs].
8
7
 
@@ -19,12 +18,12 @@ Some dependent libraries are needed only when using specific middleware:
19
18
 
20
19
  | Middleware | Library | Notes |
21
20
  | --------------------------- | -------------- | ----- |
22
- | [FaradayMiddleware::Instrumentation](https://github.com/lostisland/faraday_middleware/blob/master/lib/faraday_middleware/instrumentation.rb) | [`activesupport`](https://rubygems.org/gems/activesupport) | |
23
- | [FaradayMiddleware::OAuth](https://github.com/lostisland/faraday_middleware/blob/master/lib/faraday_middleware/request/oauth.rb) | [`simple_oauth`](https://rubygems.org/gems/simple_oauth) | |
24
- | [FaradayMiddleware::ParseXml](https://github.com/lostisland/faraday_middleware/blob/master/lib/faraday_middleware/response/parse_xml.rb) | [`multi_xml`](https://rubygems.org/gems/multi_xml) | |
25
- | [FaradayMiddleware::ParseYaml](https://github.com/lostisland/faraday_middleware/blob/master/lib/faraday_middleware/response/parse_yaml.rb) | [`safe_yaml`](https://rubygems.org/gems/safe_yaml) | Not backwards compatible with versions of this middleware prior to `faraday_middleware` v0.12. See code comments for alternatives. |
26
- | [FaradayMiddleware::Mashify](https://github.com/lostisland/faraday_middleware/blob/master/lib/faraday_middleware/response/mashify.rb) | [`hashie`](https://rubygems.org/gems/hashie) | |
27
- | [FaradayMiddleware::Rashify](https://github.com/lostisland/faraday_middleware/blob/master/lib/faraday_middleware/response/rashify.rb) | [`rash_alt`](https://rubygems.org/gems/rash_alt) | Make sure to uninstall original `rash` gem to avoid conflict. |
21
+ | [FaradayMiddleware::Instrumentation](https://github.com/lostisland/faraday_middleware/blob/main/lib/faraday_middleware/instrumentation.rb) | [`activesupport`](https://rubygems.org/gems/activesupport) | |
22
+ | [FaradayMiddleware::OAuth](https://github.com/lostisland/faraday_middleware/blob/main/lib/faraday_middleware/request/oauth.rb) | [`simple_oauth`](https://rubygems.org/gems/simple_oauth) | |
23
+ | [FaradayMiddleware::ParseXml](https://github.com/lostisland/faraday_middleware/blob/main/lib/faraday_middleware/response/parse_xml.rb) | [`multi_xml`](https://rubygems.org/gems/multi_xml) | |
24
+ | [FaradayMiddleware::ParseYaml](https://github.com/lostisland/faraday_middleware/blob/main/lib/faraday_middleware/response/parse_yaml.rb) | [`safe_yaml`](https://rubygems.org/gems/safe_yaml) | Not backwards compatible with versions of this middleware prior to `faraday_middleware` v0.12. See code comments for alternatives. |
25
+ | [FaradayMiddleware::Mashify](https://github.com/lostisland/faraday_middleware/blob/main/lib/faraday_middleware/response/mashify.rb) | [`hashie`](https://rubygems.org/gems/hashie) | |
26
+ | [FaradayMiddleware::Rashify](https://github.com/lostisland/faraday_middleware/blob/main/lib/faraday_middleware/response/rashify.rb) | [`rash_alt`](https://rubygems.org/gems/rash_alt) | Make sure to uninstall original `rash` gem to avoid conflict. |
28
27
 
29
28
  Examples
30
29
  --------
@@ -80,9 +80,7 @@ module FaradayMiddleware
80
80
  def finalize_response(env, rack_response)
81
81
  status, headers, body = rack_response
82
82
  body = body.inject { |str, part| str << part }
83
- unless headers.is_a?(Faraday::Utils::Headers)
84
- headers = Faraday::Utils::Headers.new(headers)
85
- end
83
+ headers = Faraday::Utils::Headers.new(headers) unless headers.is_a?(Faraday::Utils::Headers)
86
84
 
87
85
  env.update status: status.to_i,
88
86
  body: body,
@@ -27,7 +27,7 @@ module FaradayMiddleware
27
27
  end
28
28
 
29
29
  def encode(data)
30
- ::JSON.dump data
30
+ ::JSON.generate data
31
31
  end
32
32
 
33
33
  def match_content_type(env)
@@ -38,9 +38,7 @@ module FaradayMiddleware
38
38
  end
39
39
 
40
40
  def call(env)
41
- if sign_request?(env)
42
- env[:request_headers][AUTH_HEADER] ||= oauth_header(env).to_s
43
- end
41
+ env[:request_headers][AUTH_HEADER] ||= oauth_header(env).to_s if sign_request?(env)
44
42
  @app.call(env)
45
43
  end
46
44
 
@@ -63,9 +63,7 @@ module FaradayMiddleware
63
63
  @param_name = options.fetch(:param_name, PARAM_NAME).to_s
64
64
  @token_type = options.fetch(:token_type, TOKEN_TYPE).to_s
65
65
 
66
- if @token_type == 'param' && @param_name.empty?
67
- raise ArgumentError, ":param_name can't be blank"
68
- end
66
+ raise ArgumentError, ":param_name can't be blank" if @token_type == 'param' && @param_name.empty?
69
67
 
70
68
  return unless options[:token_type].nil?
71
69
 
@@ -8,6 +8,7 @@ module FaradayMiddleware
8
8
  # Public: Caches GET responses and pulls subsequent ones from the cache.
9
9
  class Caching < Faraday::Middleware
10
10
  attr_reader :cache
11
+
11
12
  # Internal: List of status codes that can be cached:
12
13
  # * 200 - 'OK'
13
14
  # * 203 - 'Non-Authoritative Information'
@@ -26,14 +27,16 @@ module FaradayMiddleware
26
27
  # cache - An object that responds to read and write (default: nil).
27
28
  # options - An options Hash (default: {}):
28
29
  # :ignore_params - String name or Array names of query
29
- # params that should be ignored when forming
30
- # the cache key (default: []).
30
+ # params that should be ignored when forming
31
+ # the cache key (default: []).
31
32
  # :write_options - Hash of settings that should be passed as the
32
- # third options parameter to the cache's #write
33
- # method. If not specified, no options parameter
34
- # will be passed.
33
+ # third options parameter to the cache's #write
34
+ # method. If not specified, no options parameter
35
+ # will be passed.
35
36
  # :full_key - Boolean - use full URL as cache key:
36
- # (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)
37
40
  #
38
41
  # Yields if no cache is given. The block should return a cache object.
39
42
  def initialize(app, cache = nil, options = {})
@@ -85,6 +88,13 @@ module FaradayMiddleware
85
88
  @full_key ||= @options[:full_key]
86
89
  end
87
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
+
88
98
  def cache_on_complete(env)
89
99
  key = cache_key(env)
90
100
  if (cached_response = cache.read(key))
@@ -100,7 +110,7 @@ module FaradayMiddleware
100
110
  end
101
111
 
102
112
  def store_response_in_cache(key, response)
103
- return unless CACHEABLE_STATUS_CODES.include?(response.status)
113
+ return unless custom_status_codes.include?(response.status)
104
114
 
105
115
  if @options[:write_options]
106
116
  cache.write(key, response, @options[:write_options])
@@ -133,7 +133,7 @@ module FaradayMiddleware
133
133
  def safe_escape(uri)
134
134
  uri = uri.split('#')[0] # we want to remove the fragment if present
135
135
  uri.to_s.gsub(URI_UNSAFE) do |match|
136
- '%' + match.unpack('H2' * match.bytesize).join('%').upcase
136
+ "%#{match.unpack('H2' * match.bytesize).join('%').upcase}"
137
137
  end
138
138
  end
139
139
 
@@ -34,9 +34,7 @@ module FaradayMiddleware
34
34
 
35
35
  def call(environment)
36
36
  @app.call(environment).on_complete do |env|
37
- if process_response_type?(response_type(env)) && parse_response?(env)
38
- process_response(env)
39
- end
37
+ process_response(env) if process_response_type?(response_type(env)) && parse_response?(env)
40
38
  end
41
39
  end
42
40
 
@@ -44,7 +42,7 @@ module FaradayMiddleware
44
42
  env[:raw_body] = env[:body] if preserve_raw?(env)
45
43
  env[:body] = parse(env[:body])
46
44
  rescue Faraday::ParsingError => e
47
- raise Faraday::ParsingError.new(e, env[:response])
45
+ raise Faraday::ParsingError.new(e.wrapped_exception, env[:response])
48
46
  end
49
47
 
50
48
  # Parse the response body.
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Main FaradayMiddleware module.
4
4
  module FaradayMiddleware
5
- VERSION = '1.0.0' unless defined?(FaradayMiddleware::VERSION)
5
+ VERSION = '1.2.0' unless defined?(FaradayMiddleware::VERSION)
6
6
  end
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.0.0
4
+ version: 1.2.0
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: 2020-03-29 00:00:00.000000000 Z
12
+ date: 2021-10-14 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
79
+ rubygems_version: 3.0.3.1
80
80
  signing_key:
81
81
  specification_version: 4
82
82
  summary: Various middleware for Faraday