class Shimmer::FileProxy

Attributes

blob_id[R]
resize[R]

Public Class Methods

message_verifier() click to toggle source
# File lib/shimmer/utils/file_proxy.rb, line 30
def message_verifier
  @message_verifier ||= ApplicationRecord.signed_id_verifier
end
new(blob_id:, resize: nil, width: nil, height: nil) click to toggle source
# File lib/shimmer/utils/file_proxy.rb, line 17
def initialize(blob_id:, resize: nil, width: nil, height: nil)
  @blob_id = blob_id
  if !resize && width
    resize = if height
      "#{width}x#{height}>"
    else
      "#{width}x"
    end
  end
  @resize = resize
end
restore(id) click to toggle source
# File lib/shimmer/utils/file_proxy.rb, line 11
def restore(id)
  blob_id, resize = message_verifier.verified(id)
  new blob_id: blob_id, resize: resize
end

Public Instance Methods

blob() click to toggle source
# File lib/shimmer/utils/file_proxy.rb, line 43
def blob
  @blob ||= ActiveStorage::Blob.find(blob_id)
end
file() click to toggle source
# File lib/shimmer/utils/file_proxy.rb, line 55
def file
  @file ||= blob.service.download(variant.key)
end
path() click to toggle source
# File lib/shimmer/utils/file_proxy.rb, line 35
def path
  Rails.application.routes.url_helpers.file_path(id, locale: nil)
end
resizeable() click to toggle source
# File lib/shimmer/utils/file_proxy.rb, line 47
def resizeable
  resize.present? && !blob.content_type.include?("svg")
end
url(protocol: Rails.env.production? ? :https : :http) click to toggle source
# File lib/shimmer/utils/file_proxy.rb, line 39
def url(protocol: Rails.env.production? ? :https : :http)
  Rails.application.routes.url_helpers.file_url(id, locale: nil, protocol: protocol)
end
variant() click to toggle source
# File lib/shimmer/utils/file_proxy.rb, line 51
def variant
  @variantvariant ||= resizeable ? blob.representation(resize: resize).processed : blob
end

Private Instance Methods

id() click to toggle source
# File lib/shimmer/utils/file_proxy.rb, line 61
def id
  @id ||= message_verifier.generate([blob_id, resize])
end