Module: Imagery::SendFile

Included in:
RemoteProxy, Server
Defined in:
lib/imagery/send_file.rb

Constant Summary

CopyHeaders =
['Content-Type', 'Cache-Control', 'Last-Modified', 'ETag']
ContentTypes =
{
  '.gif'  => 'image/gif',
  '.jpg'  => 'image/jpeg',
  '.jpeg' => 'image/jpeg',
  '.png'  => 'image/png',
  '.bmp'  => 'image/x-bitmap',
  '.svg'  => 'image/svg+xml'
}

Instance Method Summary (collapse)

Instance Method Details

- (Object) send_file(file)



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/imagery/send_file.rb', line 16

def send_file(file)
  headers = {'Content-Length' => file.content.length.to_s}

  if file.respond_to?(:headers)
    CopyHeaders.each do |key|
      headers[key] = file.headers[key] if file.headers.has_key?(key)
    end
  end

  headers['ETag']           ||= Digest::MD5.hexdigest(file.content)
  headers['Cache-Control']  ||= 'public, max-age=31557600'
  headers['Last-Modified']  ||= Time.new.httpdate

  [200, headers, [file.content]]
end