faraday-http-cache 2.4.0 → 2.5.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: 6603be3bbf6a2840ba11f947f7e42f030ab52600912e9a62d16aaf27ee5e6446
4
- data.tar.gz: 95b8b2f4b08525406027d47e14341f5f301409a2518332b243dc08d2bde4e693
3
+ metadata.gz: 9ec7c39769697b84b0fd12f97d8dd14953cef613f3621be2bea6561e40a77805
4
+ data.tar.gz: f47c57b3233c0e7fec8ae527f33be203918393eb8efc3443bfc3e1a421ddd3b9
5
5
  SHA512:
6
- metadata.gz: 4675c865c18641322c71b77881a74d3ca4edbf4fb1d628ac0fe7a6388d6a3c973946f1d7fa7b09d654f1eff61484a8c2d8524c966e4377c1e12854bf8114e13a
7
- data.tar.gz: 832d7579eb75d3631e539ca7af996b9d062dbe43582468f98c349b3dbc963dde17cecf57a0202af1916297013143becba1a0fc1f32ddf92ab98490876e3efc84
6
+ metadata.gz: 46ae27b09f324cea6d5d49c6f83b9ee11c00e3840dce48243534896bf9fed16cc3e2f55d9711b8355597327af7118b35aa70fa5ba6bfc97ef924ff58b249e22c
7
+ data.tar.gz: 6a013f290b94a09be66880fd339885fde26df832f65eff3a0352fc1689a5bd2c7dece5e80998c0ab6ea8890ebd3b6b77e8a1d8643a94b4429e9de2a7b3ed60d1
@@ -142,7 +142,8 @@ module Faraday
142
142
  {
143
143
  status: @payload[:status],
144
144
  body: @payload[:body],
145
- response_headers: @payload[:response_headers]
145
+ response_headers: @payload[:response_headers],
146
+ reason_phrase: @payload[:reason_phrase]
146
147
  }
147
148
  end
148
149
 
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'json'
4
+ require 'logger'
4
5
  require 'faraday/http_cache/memory_store'
5
6
 
6
7
  module Faraday
@@ -77,7 +77,7 @@ module Faraday
77
77
  # @return [String]
78
78
  def response_cache_key_for(request, vary)
79
79
  method = request.method.to_s
80
- headers = vary.split(/[\s,]+/).map { |header| request.headers[header] }
80
+ headers = vary.split(/[\s,]+/).uniq.sort.map { |header| request.headers[header] }
81
81
  Digest::SHA1.hexdigest("by_vary#{@cache_salt}#{method}#{request.url}#{headers.join}")
82
82
  end
83
83
  end
@@ -301,7 +301,8 @@ module Faraday
301
301
  {
302
302
  status: hash[:status],
303
303
  body: hash[:body] || hash[:response_body],
304
- response_headers: hash[:response_headers]
304
+ response_headers: hash[:response_headers],
305
+ reason_phrase: hash[:reason_phrase]
305
306
  }
306
307
  end
307
308
 
@@ -200,7 +200,7 @@ describe Faraday::HttpCache::Response do
200
200
  end
201
201
 
202
202
  describe 'response unboxing' do
203
- subject { described_class.new(status: 200, response_headers: {}, body: 'Hi!') }
203
+ subject { described_class.new(status: 200, response_headers: {}, body: 'Hi!', reason_phrase: 'Success') }
204
204
 
205
205
  let(:env) { { method: :get } }
206
206
  let(:response) { subject.to_response(env) }
@@ -224,6 +224,10 @@ describe Faraday::HttpCache::Response do
224
224
  it 'merges the body' do
225
225
  expect(response.body).to eq('Hi!')
226
226
  end
227
+
228
+ it 'merges the reason phrase' do
229
+ expect(response.reason_phrase).to eq('Success') if response.respond_to?(:reason_phrase)
230
+ end
227
231
  end
228
232
 
229
233
  describe 'remove age before caching and normalize max-age if non-zero age present' do
@@ -4,10 +4,11 @@ require 'spec_helper'
4
4
 
5
5
  describe Faraday::HttpCache::Strategies::ByVary do
6
6
  let(:vary_index_cache_key) { '64896419583e8022efeb21d0ece6e266c0e58b59' }
7
- let(:cache_key) { '25230d75622fffc4f4de8a6af69e6e3764f7eb6f' }
8
- let(:vary) { '' }
7
+ let(:cache_key) { '978047698d156fe8642a86dbfaacc675917c9a22' }
8
+ let(:vary) { 'Accept, Accept-Encoding, X-Requested-With' }
9
+ let(:headers) { {'Accept' => 'text/html', 'Accept-Encoding' => 'gzip, deflate, br' } }
9
10
  let(:request) do
10
- env = {method: :get, url: 'http://test/index'}
11
+ env = {method: :get, url: 'http://test/index', headers: headers}
11
12
  double(env.merge(serializable_hash: env))
12
13
  end
13
14
 
@@ -54,11 +55,17 @@ describe Faraday::HttpCache::Strategies::ByVary do
54
55
  )
55
56
  end
56
57
  end
58
+
59
+ context 'with reordered and doubled values in the vary' do
60
+ let(:vary) { 'X-Requested-With,Accept,Accept-Encoding,Accept' }
61
+
62
+ it_behaves_like 'A strategy with serialization'
63
+ end
57
64
  end
58
65
 
59
66
  context 'with the Marshal serializer' do
60
67
  let(:vary_index_cache_key) { '6a7cb42440c10ef6edeb1826086a4d90b04103f0' }
61
- let(:cache_key) { '45e0efd1a60d29ed69d6c6018dfcb96f58db89e0' }
68
+ let(:cache_key) { 'c9edbf280da95d4cac5acda8b8109c0aba2a469a' }
62
69
  let(:serializer) { Marshal }
63
70
  let(:strategy) { described_class.new(store: cache, serializer: Marshal) }
64
71
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday-http-cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Mazza
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2022-06-08 00:00:00.000000000 Z
13
+ date: 2023-04-27 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  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.2.3
84
+ rubygems_version: 3.2.22
85
85
  signing_key:
86
86
  specification_version: 4
87
87
  summary: A Faraday middleware that stores and validates cache expiration.