diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2017-07-04 18:11:06 +0200 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2017-07-04 18:11:06 +0200 |
commit | 4712e2361199c0becc216d392d3d84666bad076b (patch) | |
tree | 0d2547043a571050cbc975c3bdf5007e06a4502e /lib/active_file | |
parent | 09878fb19d46674605fb6e48c1b86e2915ad7496 (diff) | |
download | rails-4712e2361199c0becc216d392d3d84666bad076b.tar.gz rails-4712e2361199c0becc216d392d3d84666bad076b.tar.bz2 rails-4712e2361199c0becc216d392d3d84666bad076b.zip |
Fix up DiskController and add basic testing
Diffstat (limited to 'lib/active_file')
-rw-r--r-- | lib/active_file/disk_controller.rb | 13 | ||||
-rw-r--r-- | lib/active_file/site/disk_site.rb | 2 |
2 files changed, 12 insertions, 3 deletions
diff --git a/lib/active_file/disk_controller.rb b/lib/active_file/disk_controller.rb index 5140c91f0a..d778cf066f 100644 --- a/lib/active_file/disk_controller.rb +++ b/lib/active_file/disk_controller.rb @@ -1,8 +1,17 @@ +require "action_controller" +require "active_file/blob" +require "active_file/verified_key_with_expiration" + +require "active_support/core_ext/object/inclusion" + class ActiveFile::DiskController < ActionController::Base def show if key = decode_verified_key blob = ActiveFile::Blob.find_by!(key: key) - send_data blob.download, filename: blob.filename, type: blob.content_type, disposition: disposition_param + + if stale?(etag: blob.checksum) + send_data blob.download, filename: blob.filename, type: blob.content_type, disposition: disposition_param + end else head :not_found end @@ -10,7 +19,7 @@ class ActiveFile::DiskController < ActionController::Base private def decode_verified_key - ActiveFile::Site::DiskSite::VerifiedKeyWithExpiration.decode(params[:encoded_key]) + ActiveFile::VerifiedKeyWithExpiration.decode(params[:encoded_key]) end def disposition_param diff --git a/lib/active_file/site/disk_site.rb b/lib/active_file/site/disk_site.rb index ec60175bbf..7916a642c0 100644 --- a/lib/active_file/site/disk_site.rb +++ b/lib/active_file/site/disk_site.rb @@ -40,7 +40,7 @@ class ActiveFile::Site::DiskSite < ActiveFile::Site def url(key, expires_in:, disposition:, filename:) verified_key_with_expiration = ActiveFile::VerifiedKeyWithExpiration.encode(key, expires_in: expires_in) - if defined?(Rails) + if defined?(Rails) && defined?(Rails.application) Rails.application.routes.url_helpers.rails_disk_blob_path(verified_key_with_expiration, disposition: disposition) else "/rails/blobs/#{verified_key_with_expiration}?disposition=#{disposition}" |