Class: CachedHttpFile
- Inherits:
-
Object
- Object
- CachedHttpFile
- Defined in:
- lib/tiny_site.rb
Class Method Summary collapse
Instance Method Summary collapse
- #cached ⇒ Object
- #cached? ⇒ Boolean
- #fetch ⇒ Object
- #get ⇒ Object
-
#initialize(url, expires_in = 3600) ⇒ CachedHttpFile
constructor
A new instance of CachedHttpFile.
- #store ⇒ Object
Constructor Details
#initialize(url, expires_in = 3600) ⇒ CachedHttpFile
Returns a new instance of CachedHttpFile.
27 28 29 |
# File 'lib/tiny_site.rb', line 27 def initialize(url, expires_in=3600) @url, @expires_in = url, expires_in end |
Class Method Details
.bust ⇒ Object
64 65 66 67 |
# File 'lib/tiny_site.rb', line 64 def bust puts 'busting cache' @files = {} end |
.files ⇒ Object
58 59 60 |
# File 'lib/tiny_site.rb', line 58 def files @files ||= {} end |
.get(url, expires_in = 3600) ⇒ Object
61 62 63 |
# File 'lib/tiny_site.rb', line 61 def get(url, expires_in=3600) (new url, expires_in).get end |
Instance Method Details
#cached ⇒ Object
44 45 46 |
# File 'lib/tiny_site.rb', line 44 def cached return 200, self.class.files[@url][:content] end |
#cached? ⇒ Boolean
41 42 43 |
# File 'lib/tiny_site.rb', line 41 def cached? self.class.files[@url] && self.class.files[@url][:expires_at] > Time.now end |
#fetch ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/tiny_site.rb', line 31 def fetch puts "fetching #{@url}" @body = open(@url).read store return 200, @body rescue OpenURI::HTTPError => error puts "OpenURI::HTTPError: #{error.}" return error..to_i, nil end |
#get ⇒ Object
53 54 55 |
# File 'lib/tiny_site.rb', line 53 def get (cached? && cached) || fetch end |
#store ⇒ Object
48 49 50 51 |
# File 'lib/tiny_site.rb', line 48 def store puts "storing body of #{@url}" self.class.files[@url] = {:content => @body, :expires_at => Time.now + @expires_in} end |