Class: Utopia::Middleware::Static::FileReader
- Inherits:
-
Object
- Object
- Utopia::Middleware::Static::FileReader
- Defined in:
- lib/utopia/middleware/static.rb
Instance Attribute Summary collapse
-
#etag ⇒ Object
readonly
Returns the value of attribute etag.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
Instance Method Summary collapse
- #each ⇒ Object
-
#initialize(path) ⇒ FileReader
constructor
A new instance of FileReader.
- #modified?(env) ⇒ Boolean
- #mtime_date ⇒ Object
- #size ⇒ Object
- #to_path ⇒ Object
Constructor Details
#initialize(path) ⇒ FileReader
Returns a new instance of FileReader.
38 39 40 41 |
# File 'lib/utopia/middleware/static.rb', line 38 def initialize(path) @path = path @etag = Digest::SHA1.hexdigest("#{File.size(@path)}#{mtime_date}") end |
Instance Attribute Details
#etag ⇒ Object (readonly)
Returns the value of attribute etag.
44 45 46 |
# File 'lib/utopia/middleware/static.rb', line 44 def etag @etag end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
43 44 45 |
# File 'lib/utopia/middleware/static.rb', line 43 def path @path end |
Instance Method Details
#each ⇒ Object
58 59 60 61 62 63 64 |
# File 'lib/utopia/middleware/static.rb', line 58 def each File.open(@path, "rb") do |fp| while part = fp.read(8192) yield part end end end |
#modified?(env) ⇒ Boolean
66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/utopia/middleware/static.rb', line 66 def modified?(env) if modified_since = env['HTTP_IF_MODIFIED_SINCE'] return false if File.mtime(@path) <= Time.parse(modified_since) end if = env['HTTP_IF_NONE_MATCH'] = .split(/\s*,\s*/) return false if .include?(etag) || .include?('*') end return true end |
#mtime_date ⇒ Object
50 51 52 |
# File 'lib/utopia/middleware/static.rb', line 50 def mtime_date File.mtime(@path).httpdate end |
#size ⇒ Object
54 55 56 |
# File 'lib/utopia/middleware/static.rb', line 54 def size File.size(@path) end |
#to_path ⇒ Object
46 47 48 |
# File 'lib/utopia/middleware/static.rb', line 46 def to_path @path end |