require 'graphql' require 'json' require 'rack' require 'types/cake' require 'types/query' require 'schema' class Server def call(env) result = execute(query_for(Rack::Request.new(env))) [ 200, { 'Content-Type' => 'application/graphql' }, [ result.to_json ] ] end private def execute(query) Schema.execute(query) end def query_for(request) request.post? ? request.body.read : request.params['query'] end end