aboutsummaryrefslogblamecommitdiffstats
path: root/lib/active_file/disk_controller.rb
blob: b5a19fa5fc6076b3c93a7eead8640640a5b465c3 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11

                                                         

                                                
                                                                                                               

                     



         

                                                                                





                                                                           
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
    else
      head :not_found
    end
  end

  private
    def decode_verified_key
      ActiveFile::Sites::DiskSite::VerifiedKeyWithExpiration.decode(params[:id])
    end

    def disposition_param
      params[:disposition].presence_in(%w( inline attachment )) || 'inline'
    end
end