class Urifetch::Strategy::Image

Public Instance Methods

process_request() click to toggle source
# File lib/urifetch/strategy/image.rb, line 3
def process_request
      
  # Works for ["PCX", "PSD", "XPM", "TIFF", "XBM", "PGM", "PBM", "PPM", "BMP", "JPEG", "PNG", "GIF", "SWF"]
  
  # Preview File Source
  set :image, @request.base_uri.to_s
  set :url, @request.base_uri.to_s    
  
  # Title
  set :title, File.basename(@request.base_uri.to_s)
  
  # File Type
  set :mime_type, @request.meta['content-type']
  
  # File Size
  set :image_size, number_to_human_size(@request.size)
  
  unless get(:mime_type).match(/text\/html/i).nil?
    doc = Nokogiri::HTML.parse(@request)
            
    # Open Auth data
    if og = OpenGraph.parse(doc)
      set :url,         og.url,   override: true
      set :title,       og.title, override: true
      set :image,       og.image, override: true
    end
    
    unless set? :title
      t = doc.css('title').first
      set :title, t.nil? ? match_data[0] : t.content.strip
    end
    
  else
  
    # Image Size
    sizes = [nil,nil]
    3.times do |i|
      begin
        sizes = ImageSize.new(@request).get_size
      rescue NoMethodError => e
        sizes = ImageSize.new(@request.read).get_size
      end
      break if sizes != [nil,nil]
    end
  
    unless sizes == [nil,nil]
      set :image_height, sizes[1]
      set :image_width, sizes[0]
    end
  
  end
  
end