Sha256: 8c2a3dd3e0a9704d1e15c0d2f062e48992ff7220173021c37cf3dca892da916a

Contents?: true

Size: 1.87 KB

Versions: 1

Compression:

Stored size: 1.87 KB

Contents

require 'stringio'

module Shutterbug
  module Handlers
    class ConvertHandler

      def self.config
        Configuration.instance
      end

      def self.regex
        /#{self.config.path_prefix}\/make_snapshot/
      end

      def handle(helper, req, env)
        response_text = convert(req).image_tag
        helper.response(response_text, 'text/plain')
      end

      def convert_quality(val, format)
        # Client sends quality between 0 and 1 (similar to .toDataURL() second argument).
        # This conversion tries to ensure that the size of the final image is similar to
        # .toDataURL() output with given quality settings.
        val = val.to_f
        case format
        when "png"
          val *= 10
        when "jpeg"
          val *= 100
        else
          val *= 100
        end
        # PhantomJS expects integer.
        val.to_i
      end

      def convert(req)
        html     = req.POST()['content'] || ""
        width    = req.POST()['width']   || 1000
        height   = req.POST()['height']  || 700
        css      = req.POST()['css']     || ""
        format   = req.POST()['format']  || "png"
        quality  = req.POST()['quality'] || 1
        quality  = convert_quality(quality, format)
        config   = self.class.config
        job = PhantomJob.new(config.base_url(req), html, css, width, height, format, quality)
        unless (cache_entry = config.cache_manager.find(job.cache_key))
          job.rasterize
          html_entry = Shutterbug::CacheManager::CacheEntry.new(job.html_file)
          image_entry = Shutterbug::CacheManager::CacheEntry.new(job.image_file)
          html_entry.preview_url = image_entry.preview_url
          config.cache_manager.add_entry(html_entry)
          cache_entry = config.cache_manager.add_entry(image_entry)
        end
        # return the image tag
        return cache_entry
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shutterbug-0.4.3 lib/shutterbug/handlers/convert_handler.rb