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