main
 1require 'graphql'
 2require 'json'
 3require 'rack'
 4
 5require 'types/cake'
 6require 'types/query'
 7require 'schema'
 8
 9class Server
10  def call(env)
11    result = execute(query_for(Rack::Request.new(env)))
12    [
13      200,
14      { 'Content-Type' => 'application/graphql' },
15      [ result.to_json ]
16    ]
17  end
18
19  private
20
21  def execute(query)
22    Schema.execute(query)
23  end
24
25  def query_for(request)
26    request.post? ? request.body.read : request.params['query']
27  end
28end