Sha256: d4b78ab4494b99ebc1e1889517d9451603bab557eb49bfdc44964c2cdd32c90a

Contents?: true

Size: 1.03 KB

Versions: 6

Compression:

Stored size: 1.03 KB

Contents

module Locomotive
  module Steam

    class ImageResizerService < Struct.new(:resizer, :asset_path)

      def resize(source, geometry)
        return nil if disabled? || geometry.blank?

        if file = fetch_file(source)
          file.thumb(geometry).url
        else
          Locomotive::Common::Logger.error "Unable to resize on the fly: #{source.inspect}"
          nil
        end
      end

      def disabled?
        resizer.nil? || resizer.plugins[:imagemagick].nil?
      end

      protected

      def fetch_file(source)
        url_or_path = get_url_or_path(source)

        if url_or_path =~ Steam::IsHTTP
          resizer.fetch_url(url_or_path)
        else
          path = url_or_path.sub(/(\?.*)$/, '')
          resizer.fetch_file(File.join(asset_path || '', 'public', path))
        end
      end

      def get_url_or_path(source)
        if source.is_a?(Hash)
          source['url']
        elsif source.respond_to?(:url)
          source.url
        else
          source
        end.strip
      end

    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
locomotivecms_steam-1.0.0.pre.beta.3 lib/locomotive/steam/services/image_resizer_service.rb
locomotivecms_steam-1.0.0.pre.beta.2 lib/locomotive/steam/services/image_resizer_service.rb
locomotivecms_steam-1.0.0.pre.beta.1 lib/locomotive/steam/services/image_resizer_service.rb
locomotivecms_steam-1.0.0.pre.alpha.3 lib/locomotive/steam/services/image_resizer_service.rb
locomotivecms_steam-1.0.0.pre.alpha.2 lib/locomotive/steam/services/image_resizer_service.rb
locomotivecms_steam-1.0.0.pre.alpha.1 lib/locomotive/steam/services/image_resizer_service.rb