Gem Travis Code Climate Gemnasium

Hassle-free caching for HTTP download.


$ gem install webcache

Or with bundler:

ruby gem 'webcache'


Load a file from cache, or download if needed:

ruby require 'webcache' cache = WebCache.new response = cache.get 'http://example.com' puts response # => "<html>...</html>" puts response.content # => same as above puts response.to_s # => same as above puts response.error # => nil puts response.base_uri # => "http://example.com/"

By default, the cached objects are stored in the ./cache directory, and expire after 60 minutes. The cache directory will be created as needed.

You can change these settings on initialization:

ruby cache = WebCache.new 'tmp/my_cache', 7200 response = cache.get 'http://example.com'

Or later:

ruby cache = WebCache.new cache.dir = 'tmp/my_cache' cache.life = 7200 # seconds response = cache.get 'http://example.com'

To check if a URL is cached, use the cached? method:

```ruby cache = WebCache.new cache.cached? ‘http://example.com’ # => false

response = cache.get ‘http://example.com’ cache.cached? ‘http://example.com’ # => true ```

You can enable/disable the cache at any time:

```ruby cache = WebCache.new cache.disable cache.enabled? # => false

response = cache.get ‘http://example.com’ cache.cached? ‘http://example.com’ # => false

cache.enable response = cache.get ‘http://example.com’ cache.cached? ‘http://example.com’ # => true ```

Response Object

The response object holds these properties:

Contains the HTML content. In case of an error, this will include the error message. The #to_s method of the response object also returns the same content.

In case of an error, this contains the error message, nil otherwose.

Contains the actual address of the page. This is useful when the request is redirected. For example, http://example.com will set the base_uri to http://example.com/ (note the trailing slash).

```ruby cache = WebCache.new response = cache.get ‘http://example.com/not_found’ puts response # => ‘404 Not Found’

puts response.error # => ‘404 Not Found’ ```