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