blob: ad3580b4566f58e10bdb493847cfc5f58ab8a24d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
require 'rack'
require 'json'
require 'graphql'
module Types
class Cake < GraphQL::Schema::Object
field :name, String, null: false
end
class Query < GraphQL::Schema::Object
field :me, String, null: false
field :cakes, [Cake], null: false
def me
'mo'
end
end
end
class MySchema < GraphQL::Schema
max_complexity 400
query Types::Query
end
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)
MySchema.execute(query)
end
def query_for(request)
request.post? ? request.body.read : request.params['query']
end
end
|