summaryrefslogtreecommitdiff
path: root/lib/server.rb
blob: 03b3f1e2c21d254fe7db515e10a7b05d2ec20b75 (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
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