class Shrine::Storage::Tus
Attributes
tus_storage[R]
Public Class Methods
new(tus_storage: nil, **options)
click to toggle source
Calls superclass method
# File lib/shrine/storage/tus.rb, line 10 def initialize(tus_storage: nil, **options) @tus_storage = tus_storage super(delete: true, **options) end
Public Instance Methods
open(id, **options)
click to toggle source
Calls superclass method
# File lib/shrine/storage/tus.rb, line 16 def open(id, **options) return super unless tus_storage open_from_tus_storage(tus_uid(id), **options) rescue ::Tus::NotFound raise Shrine::FileNotFound, "file #{id.inspect} not found on storage" end
Private Instance Methods
get_tus_file(uid)
click to toggle source
# File lib/shrine/storage/tus.rb, line 38 def get_tus_file(uid) tus_storage.get_file(uid) end
get_tus_info(uid)
click to toggle source
# File lib/shrine/storage/tus.rb, line 42 def get_tus_info(uid) tus_storage.read_info(uid) end
open_from_tus_storage(uid, rewindable: true, **)
click to toggle source
# File lib/shrine/storage/tus.rb, line 26 def open_from_tus_storage(uid, rewindable: true, **) info = get_tus_info(uid) response = get_tus_file(uid) Down::ChunkedIO.new( size: Integer(info["Upload-Length"]), chunks: response.each, on_close: response.method(:close), rewindable: rewindable, ) end
request(verb, url, **options)
click to toggle source
Add “Tus-Resumable” header to HEAD and DELETE requests.
Calls superclass method
# File lib/shrine/storage/tus.rb, line 51 def request(verb, url, **options) super(verb, url, headers: { "Tus-Resumable" => "1.0.0" }, **options) end
tus_uid(url)
click to toggle source
# File lib/shrine/storage/tus.rb, line 46 def tus_uid(url) url.split("/").last end