Method: Brief::Server::Gateway#call

Defined in:
lib/brief/server/gateway.rb

#call(env) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/brief/server/gateway.rb', line 35

def call(env)
  request = Rack::Request.new(env)
  params  = request.params.symbolize_keys

  if request.path.match(/\/all$/)
    presenter = params.fetch(:presenter, 'default')
    return [200, {}, [
      @briefcases.values.map do |bc|
        bc.present(presenter, params)
      end.to_json
    ]]
  end

  name    = request.path.match(/\/\w+\/(\w+)/)[1] rescue nil

  if name && @briefcases[name]
    @briefcases[name].server.call(env)
  else
    [404, {}, ["Not found: #{ name } -- #{ request.path }"]]
  end
end