UNPKG

1.66 kBJavaScriptView Raw
1// Copyright 2018 Zaiste & contributors. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6// http://www.apache.org/licenses/LICENSE-2.0
7//
8// Unless required by applicable law or agreed to in writing, software
9// distributed under the License is distributed on an "AS IS" BASIS,
10// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11// See the License for the specific language governing permissions and
12// limitations under the License.
13
14const debug = require('debug')('huncwot:graphql');
15
16const Promise = require('bluebird');
17const fs = Promise.promisifyAll(require('fs-extra'));
18const path = require('path');
19const assert = require('assert');
20const mime = require('mime-types');
21
22const { OK, html } = require('./response.js');
23
24const { runHttpQuery } = require('apollo-server-core');
25const { resolveGraphiQLString } = require('apollo-server-module-graphiql');
26const { makeExecutableSchema } = require('graphql-tools');
27
28function graphql(options) {
29 return async request => {
30 let method = request.request.method;
31 let query = request.params;
32 let { graphqlResponse, responseInit } = await runHttpQuery([], {
33 method,
34 options,
35 query
36 });
37
38 return OK(graphqlResponse);
39 };
40}
41
42function graphiql(options) {
43 return async request => {
44 let query = request.params;
45 let response = await resolveGraphiQLString(query, options, request);
46
47 return html(response);
48 };
49}
50
51module.exports = {
52 graphiql,
53 graphql,
54 makeSchema: makeExecutableSchema
55};