Parent

Files

Class/Module Index [+]

Quicksearch

Dragonfly::Server

Public Class Methods

new(app) click to toggle source
# File lib/dragonfly/server.rb, line 20
def initialize(app)
  @app = app
  use_same_log_as(app)
  use_as_fallback_config(app)
end

Public Instance Methods

before_serve(&block) click to toggle source
# File lib/dragonfly/server.rb, line 26
def before_serve(&block)
  self.before_serve_callback = block
end
call(env) click to toggle source
# File lib/dragonfly/server.rb, line 31
def call(env)
  if dragonfly_url == env["PATH_INFO"]
    dragonfly_response
  elsif (params = url_mapper.params_for(env["PATH_INFO"], env["QUERY_STRING"])) && params['job']
    job = Job.deserialize(params['job'], app)
    validate_job!(job)
    job.validate_sha!(params['sha']) if protect_from_dos_attacks
    response = Response.new(job, env)
    catch(:halt) do
      if before_serve_callback && response.will_be_served?
        before_serve_callback.call(job, env)
      end
      response.to_response
    end
  else
    [404, {'Content-Type' => 'text/plain', 'X-Cascade' => 'pass'}, ['Not found']]
  end
rescue Job::NoSHAGiven => e
  [400, {"Content-Type" => 'text/plain'}, ["You need to give a SHA parameter"]]
rescue Job::IncorrectSHA => e
  [400, {"Content-Type" => 'text/plain'}, ["The SHA parameter you gave (#{e}) is incorrect"]]
rescue JobNotAllowed => e
  log.warn(e.message)
  [403, {"Content-Type" => 'text/plain'}, ["Forbidden"]]
rescue Serializer::BadString, Serializer::MaliciousString, Job::InvalidArray => e
  log.warn(e.message)
  [404, {'Content-Type' => 'text/plain'}, ['Not found']]
end
url_for(job, opts={}) click to toggle source
# File lib/dragonfly/server.rb, line 60
def url_for(job, opts={})
  opts = opts.dup
  host = opts.delete(:host) || url_host
  params = stringify_keys(opts)
  params['job'] = job.serialize
  params['sha'] = job.sha if protect_from_dos_attacks
  url = url_mapper.url_for(params)
  "#{host}#{url}"
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.