Class: Uploadcare::Rails::ActiveStorage::UploadcarePreviewer

Inherits:
ActiveStorage::Previewer
  • Object
show all
Includes:
Internal::RemoteHttpFetching
Defined in:
lib/uploadcare/rails/active_storage/uploadcare_previewer.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.accept?(blob) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/uploadcare/rails/active_storage/uploadcare_previewer.rb', line 15

def accept?(blob)
  !!(uploadcare_blob?(blob) && pdf?(blob.content_type))
end

.pdf?(content_type) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/uploadcare/rails/active_storage/uploadcare_previewer.rb', line 25

def pdf?(content_type)
  Marcel::Magic.child?(content_type, "application/pdf")
end

.uploadcare_blob?(blob) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
22
23
# File 'lib/uploadcare/rails/active_storage/uploadcare_previewer.rb', line 19

def uploadcare_blob?(blob)
  blob.service.is_a?(::ActiveStorage::Service::UploadcareService)
rescue NameError
  false
end

Instance Method Details

#preview(**options) ⇒ Object



30
31
32
33
34
# File 'lib/uploadcare/rails/active_storage/uploadcare_previewer.rb', line 30

def preview(**options)
  open_preview_io(preview_url) do |output|
    yield io: output, filename: "#{blob.filename.base}.png", content_type: "image/png", **options
  end
end