cache_rules 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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