module Shrine::Plugins::Tus::AttacherMethods

Private Instance Methods

cached(data, **options) click to toggle source
Calls superclass method
# File lib/shrine/plugins/tus.rb, line 10
def cached(data, **options)
  data = data.dup
  data = JSON.parse(data) if data.is_a?(String)

  if URI.regexp =~ (data["id"] || data[:id])
    id         = data.delete("id") || data.delete(:id)
    data["id"] = tus_url_to_storage_id(id, cache.storage)
  end

  super(data, **options)
end
tus_url_to_storage_id(tus_url, storage) click to toggle source
# File lib/shrine/plugins/tus.rb, line 22
def tus_url_to_storage_id(tus_url, storage)
  tus_uid = tus_url.split("/").last

  if defined?(Storage::FileSystem) && storage.is_a?(Storage::FileSystem)
    tus_uid
  elsif defined?(Storage::Gridfs) && storage.is_a?(Storage::Gridfs)
    grid_info = storage.bucket.find(filename: tus_uid).limit(1).first
    grid_info[:_id].to_s
  elsif defined?(Storage::S3) && storage.is_a?(Storage::S3)
    tus_uid
  else
    raise Error, "undefined conversion of tus URL to storage id for storage #{storage.inspect}"
  end
end