Class: Magickly::App

Inherits:
Sinatra::Base
  • Object
show all
Defined in:
lib/magickly/app.rb

Direct Known Subclasses

MagicklyApp

Constant Summary collapse

RESERVED_PARAMS =
['src']
DEMO_IMAGE =
'http://farm4.static.flickr.com/3351/3450592233_c29fde01ef_z.jpg'

Instance Method Summary collapse

Instance Method Details

#process_path(splat) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/magickly/app.rb', line 73

def process_path splat
  src = nil
  opts = []
  
  splat.split('/').each_slice(2) do |k, v|
    if RESERVED_PARAMS.include? k
      if k == 'src'
        src = URI.unescape(v)
        # slashes come in double-escaped by Apache so we
        # need to unescape again
        src = URI.unescape(src) if src =~ /%2F/
      end
    else
      opts << [k, URI.unescape(v)]
    end
  end

  process_src_or_display_demo src, opts
end

#process_src_or_display_demo(src, options) ⇒ Object



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/magickly/app.rb', line 93

def process_src_or_display_demo src, options
  if src
    # process image
    url = uri_to_url src
    image = Magickly.process_src(url, options)
    image.to_response(env)
  else
    # display demo page
    
    # get combined list of jobs and processor methods
    @methods = ( Magickly.dragonfly.job_methods | Magickly.dragonfly.processor_methods )
    @methods.sort!{|m1, m2| m1.to_s <=> m2.to_s }
    erb :index
  end
end

#uri_to_url(uri) ⇒ Object



109
110
111
112
113
# File 'lib/magickly/app.rb', line 109

def uri_to_url(uri)
  url = Addressable::URI.parse(uri)
  url.site ||= Addressable::URI.parse(request.url).site
  url.to_s
end