class BreezyPDF::Resources::Asset

:nodoc

Public Class Methods

new(base_url, asset_path_or_url) click to toggle source
# File lib/breezy_pdf/resources/asset.rb, line 6
def initialize(base_url, asset_path_or_url)
  @base_url          = base_url
  @asset_path_or_url = asset_path_or_url
end

Public Instance Methods

content_type() click to toggle source
# File lib/breezy_pdf/resources/asset.rb, line 11
def content_type
  io_object.content_type
end
file_path() click to toggle source
# File lib/breezy_pdf/resources/asset.rb, line 19
def file_path
  file.path
end
filename() click to toggle source
# File lib/breezy_pdf/resources/asset.rb, line 15
def filename
  @filename ||= URI(asset_url).path.split("/").last
end

Private Instance Methods

asset_url() click to toggle source
# File lib/breezy_pdf/resources/asset.rb, line 50
def asset_url
  @asset_url ||= if URI(@asset_path_or_url).host
                   @asset_path_or_url
                 else
                   "#{@base_url}#{@asset_path_or_url}"
                 end
end
download_asset_from_url() click to toggle source
# File lib/breezy_pdf/resources/asset.rb, line 40
def download_asset_from_url
  start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC)
  asset_object = open(asset_url)
  timing = Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time

  BreezyPDF.logger.info("[BreezyPDF] Downloading #{filename} took `#{timing} seconds`")

  asset_object
end
file() click to toggle source
# File lib/breezy_pdf/resources/asset.rb, line 25
def file
  @file ||= if io_object.is_a?(StringIO)
              Tempfile.new.tap do |f|
                f.write io_object.tap(&:rewind).read
                f.flush
              end
            else
              io_object
            end
end
io_object() click to toggle source
# File lib/breezy_pdf/resources/asset.rb, line 36
def io_object
  @io_object ||= download_asset_from_url
end