cache_rules 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.7 (2014-02-02)
4
+
5
+ * Refactor and simplify `revalidate_response()` method
6
+
3
7
  ## 0.1.6 (2014-02-02)
4
8
 
5
9
  * Don't rescue ArgumentError on httpdate parse errors
data/Gemfile.lock CHANGED
@@ -36,7 +36,6 @@ GEM
36
36
  tins (1.3.3)
37
37
 
38
38
  PLATFORMS
39
- java
40
39
  ruby
41
40
 
42
41
  DEPENDENCIES
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## What is CacheRules
2
2
 
3
- _CacheRules_ is a well-behaved HTTP caching library aimed at being [RFC 7234](https://tools.ietf.org/html/rfc7234) complaint.
3
+ _CacheRules_ is a well-behaved HTTP caching library aimed at being [RFC 7234](https://tools.ietf.org/html/rfc7234) compliant.
4
4
 
5
5
  This library does **not actually _cache_ anything**, and it is **not a _proxy_**.
6
6
  It validates HTTP headers and returns the appropriate response to determine
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ def run_test
8
8
 
9
9
  Rake::TestTask.new do |t|
10
10
  t.libs << "test"
11
- t.test_files = FileList['test/helper.rb', 'test/test_formatting.rb']
11
+ t.test_files = FileList['test/helper.rb', 'test/test_*.rb']
12
12
  end
13
13
 
14
14
  end
data/cache_rules.gemspec CHANGED
@@ -6,7 +6,7 @@ require 'date'
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = 'cache_rules'
9
- s.version = '0.1.6'
9
+ s.version = '0.1.7'
10
10
 
11
11
  s.date = Date.today.to_s
12
12
 
data/lib/cache_rules.rb CHANGED
@@ -120,22 +120,15 @@ module CacheRules
120
120
  end
121
121
 
122
122
  # Revalidates a response by fetching headers from the origin server
123
- def revalidate_response(url, request_headers, cached_headers)
124
- request_date = Time.now.gmtime.httpdate
125
- response = make_request.call(url, request_headers, cached_headers).call
126
- response_date = Time.now.gmtime.httpdate
127
- response_headers = normalize.(response.to_hash.map &:flatten)
128
-
129
- response_headers['Date'] = response_date if response_headers['Date']
130
- response_headers['X-Cache-Req-Date'] = request_date
131
- response_headers['X-Cache-Res-Date'] = response_date
132
- response_headers['Status'] = response.code
123
+ def revalidate_response(*args)
124
+ url, request, cached = *args
125
+ res_headers = helper_response_headers.(helper_make_request_timer.(args))
133
126
 
134
127
  # 1. get the column
135
- column = RESPONSE_MAP[helper_run_validate.call(RESPONSE_TABLE[:conditions], request_headers, cached_headers, response_headers).join]
128
+ column = RESPONSE_MAP[helper_run_validate.call(RESPONSE_TABLE[:conditions], request, cached, res_headers).join]
136
129
 
137
130
  # 2. return the response
138
- helper_response url, RESPONSE_TABLE[:actions], column, cached_headers, response_headers
131
+ helper_response url, RESPONSE_TABLE[:actions], column, cached, res_headers
139
132
  rescue => error
140
133
  {:code => 504, :body => 'Gateway Timeout', :headers => [], :error => error.message, :debug => error}
141
134
  end
data/lib/helpers.rb CHANGED
@@ -335,4 +335,27 @@ module CacheRules
335
335
  Proc.new { http.request request }
336
336
  end
337
337
 
338
+ def helper_make_request_timer
339
+ Proc.new {|url, request, cached|
340
+ {
341
+ :req_date => Time.now.gmtime.httpdate,
342
+ :res => make_request.call(url, request, cached).call,
343
+ :res_date => Time.now.gmtime.httpdate
344
+ }
345
+ }
346
+ end
347
+
348
+ def helper_response_headers
349
+ Proc.new {|result|
350
+ res_headers = normalize.(result[:res].to_hash.map &:flatten)
351
+
352
+ res_headers['Date'] = result[:res_date] if res_headers['Date']
353
+ res_headers['X-Cache-Req-Date'] = result[:req_date]
354
+ res_headers['X-Cache-Res-Date'] = result[:res_date]
355
+ res_headers['Status'] = result[:res].code
356
+
357
+ res_headers
358
+ }
359
+ end
360
+
338
361
  end
data/test/helper.rb CHANGED
@@ -2,7 +2,7 @@ require 'coveralls'
2
2
  require 'fakeweb'
3
3
  require 'simplecov'
4
4
 
5
- # Coveralls.wear!
5
+ Coveralls.wear!
6
6
 
7
7
  SimpleCov.start do
8
8
  add_filter '/test/'
data/test/test_helpers.rb CHANGED
@@ -407,4 +407,26 @@ class TestHelpers < MiniTest::Test
407
407
  assert_equal result.arity, 0
408
408
  end
409
409
 
410
+ def test_make_request_timer
411
+ result = CacheRules.helper_make_request_timer
412
+
413
+ assert_kind_of Proc, result
414
+ assert_equal result.arity, 3
415
+ end
416
+
417
+ def test_response_headers
418
+ http = Net::HTTPResponse.new(1.1, 200, "OK")
419
+ http.add_field "Warning", "299 - \"Hello World\""
420
+
421
+ response_no_date = {:req_date=>"Mon, 02 Feb 2015 04:21:37 GMT", :res=>http, :res_date=>"Mon, 02 Feb 2015 04:21:40 GMT"}
422
+ result_no_date = CacheRules.helper_response_headers.call response_no_date
423
+
424
+ http.add_field "Date", "Fri, 02 Jan 2015 11:03:45 GMT"
425
+ response_with_date = {:req_date=>"Mon, 02 Feb 2015 04:21:37 GMT", :res=>http, :res_date=>"Mon, 02 Feb 2015 04:21:40 GMT"}
426
+ result_with_date = CacheRules.helper_response_headers.call response_with_date
427
+
428
+ assert_equal result_no_date, {"Warning"=>["299 - \"Hello World\""], "X-Cache-Req-Date"=>"Mon, 02 Feb 2015 04:21:37 GMT", "X-Cache-Res-Date"=>"Mon, 02 Feb 2015 04:21:40 GMT", "Status"=>200}
429
+ assert_equal result_with_date, {"Warning"=>["299 - \"Hello World\""], "Date"=>"Mon, 02 Feb 2015 04:21:40 GMT", "X-Cache-Req-Date"=>"Mon, 02 Feb 2015 04:21:37 GMT", "X-Cache-Res-Date"=>"Mon, 02 Feb 2015 04:21:40 GMT", "Status"=>200}
430
+ end
431
+
410
432
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cache_rules
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-02-01 00:00:00.000000000 Z
12
+ date: 2015-02-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fakeweb