faraday_middleware 0.13.1 → 0.14.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: 759c9264c036da4dc2e7347541d09d1afee816769b06930f40517fde2a816ab4
4
- data.tar.gz: b603e5501f0cab2e9d065cb86c71cc46b7c5260f7ef136bd13d791b19d650c3d
3
+ metadata.gz: e7beabdfd775a267ce0c8be26be6d42177d2b586e39ac1f4e8e2e07d9554ea53
4
+ data.tar.gz: c06131c5aaaea0affda0f77c3459da0ce3f2404c437893fb088a41ebbc502313
5
5
  SHA512:
6
- metadata.gz: 696314d36aa007d70c27e07c918878803c36778ce69d8192c73f32b04cbb28ac20fba0a64d7b2fbb87e2ad167cb99363a7648808f27d402d7130a5a36fd5e9b6
7
- data.tar.gz: 5d479f6be7386844f4b699c06773fcfdc0ae22530904b95220c8433a1d2f6237072dc95dbaf4fd0929b6f098132c400bc5fbd11e3354f83ea23d7fccd0dc1d76
6
+ metadata.gz: bca7b8a07b9113d6e1df94e2b5ec426496bc914f04d76bc4c755dcaf4d57d33cf0f85c68db94103acc197860428191bc838b79ef8187f682749eba2523add633
7
+ data.tar.gz: 35dc075c2606f365407947c3f24be9c6e1d9b59948198d532ab3254c6ae3b1fd975de519a9e80b054cb807c204c5b23be13ba17ca59014b05063facc07bd4c5c
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  Faraday Middleware
2
2
  ==================
3
+ [![Gem Version](https://badge.fury.io/rb/faraday_middleware.svg)](https://rubygems.org/gems/faraday_middleware)
4
+ [![Build Status](https://travis-ci.org/lostisland/faraday_middleware.svg)](https://travis-ci.org/lostisland/faraday_middleware)
5
+ [![Maintainability](https://api.codeclimate.com/v1/badges/a971ee5025b269c39d93/maintainability)](https://codeclimate.com/github/lostisland/faraday_middleware/maintainability)
3
6
 
4
7
  A collection of useful [Faraday][] middleware. [See the documentation][docs].
5
8
 
@@ -37,13 +37,17 @@ module FaradayMiddleware
37
37
  def call(env)
38
38
  env[:request_headers][ACCEPT_ENCODING] ||= SUPPORTED_ENCODINGS
39
39
  @app.call(env).on_complete do |response_env|
40
- case response_env[:response_headers][CONTENT_ENCODING]
41
- when 'gzip'
42
- reset_body(response_env, &method(:uncompress_gzip))
43
- when 'deflate'
44
- reset_body(response_env, &method(:inflate))
45
- when 'br'
46
- reset_body(response_env, &method(:brotli_inflate))
40
+ if response_env[:body].empty?
41
+ reset_body(response_env, &method(:raw_body))
42
+ else
43
+ case response_env[:response_headers][CONTENT_ENCODING]
44
+ when 'gzip'
45
+ reset_body(response_env, &method(:uncompress_gzip))
46
+ when 'deflate'
47
+ reset_body(response_env, &method(:inflate))
48
+ when 'br'
49
+ reset_body(response_env, &method(:brotli_inflate))
50
+ end
47
51
  end
48
52
  end
49
53
  end
@@ -81,5 +85,9 @@ module FaradayMiddleware
81
85
  def brotli_inflate(body)
82
86
  Brotli.inflate(body)
83
87
  end
88
+
89
+ def raw_body(body)
90
+ body
91
+ end
84
92
  end
85
93
  end
@@ -29,6 +29,7 @@ module FaradayMiddleware
29
29
  # :write_options - Hash of settings that should be passed as the third
30
30
  # options parameter to the cache's #write method. If not
31
31
  # specified, no options parameter will be passed.
32
+ # :full_key - Boolean - use full URL (url.host + url.request_uri) as cache key
32
33
  #
33
34
  # Yields if no cache is given. The block should return a cache object.
34
35
  def initialize(app, cache = nil, options = {})
@@ -65,14 +66,17 @@ module FaradayMiddleware
65
66
  url.query = params.any? ? build_query(params) : nil
66
67
  end
67
68
  url.normalize!
68
-
69
- Digest::SHA1.hexdigest(url.request_uri)
69
+ Digest::SHA1.hexdigest(full_key? ? url.host + url.request_uri : url.request_uri)
70
70
  end
71
71
 
72
72
  def params_to_ignore
73
73
  @params_to_ignore ||= Array(@options[:ignore_params]).map { |p| p.to_s }
74
74
  end
75
75
 
76
+ def full_key?
77
+ @full_key ||= @options[:full_key]
78
+ end
79
+
76
80
  def cache_on_complete(env)
77
81
  key = cache_key(env)
78
82
  if cached_response = cache.read(key)
@@ -10,8 +10,8 @@ module FaradayMiddleware
10
10
  end
11
11
 
12
12
  # Store a Proc that receives the body and returns the parsed result.
13
- def self.define_parser(parser = nil)
14
- @parser = parser || Proc.new
13
+ def self.define_parser(parser = nil, &block)
14
+ @parser = parser || block || raise(ArgumentError, 'Define parser with a block')
15
15
  end
16
16
 
17
17
  def self.inherited(subclass)
@@ -1,3 +1,3 @@
1
1
  module FaradayMiddleware
2
- VERSION = '0.13.1' unless defined?(FaradayMiddleware::VERSION)
2
+ VERSION = '0.14.0' unless defined?(FaradayMiddleware::VERSION)
3
3
  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: 0.13.1
4
+ version: 0.14.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: 2019-02-04 00:00:00.000000000 Z
12
+ date: 2020-01-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -81,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  requirements: []
84
- rubygems_version: 3.0.2
84
+ rubygems_version: 3.0.3
85
85
  signing_key:
86
86
  specification_version: 4
87
87
  summary: Various middleware for Faraday