Sha256: 9f13577c44eeea3d0d11a2cb77a36f3bee73dab0c956d079b29d35d4f5dd0e0a

Contents?: true

Size: 983 Bytes

Versions: 4

Compression:

Stored size: 983 Bytes

Contents

require 'cgi'

require 'murlsh'

module Murlsh

  # Set the thumbnail of s3 hosted images.
  class AddPre60S3Image < Plugin

    @hook = 'add_pre'

    S3ImageRe = %r{^(http://static\.mmb\.s3\.amazonaws\.com/)([\w\-]+)\.(jpe?g|gif|pdf|png)$}i
    StorageDir = File.join(File.dirname(__FILE__), '..', 'public', 'img',
      'thumb')

    def self.run(url, config)
      if match = S3ImageRe.match(url.url)
        extension = match[3].downcase == 'pdf' ? 'png' : match[3]

        thumb_storage = Murlsh::ImgStore.new(StorageDir,
          :user_agent => config['user_agent'])
        stored_filename = thumb_storage.store_url(
          "#{match[1]}#{match[2]}.th.#{extension}") do |i|
          max_side = config.fetch('thumbnail_max_side', 90)
          i.extend(Murlsh::ImageList).resize_down!(max_side)
        end

        url.thumbnail_url = "img/thumb/#{CGI.escape(stored_filename)}"
        url.title = match[2]  unless url.user_supplied_title?
      end
    end

  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
murlsh-1.4.1 plugins/add_pre_60_s3_image.rb
murlsh-1.4.0 plugins/add_pre_60_s3_image.rb
murlsh-1.3.1 plugins/add_pre_60_s3_image.rb
murlsh-1.3.0 plugins/add_pre_60_s3_image.rb