UNPKG

1.52 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'); // eslint-disable-line no-unused-vars
15
16const { OK, HTMLString } = require('./response.js');
17
18const { runHttpQuery } = require('apollo-server-core');
19const { resolveGraphiQLString } = require('apollo-server-module-graphiql');
20const { makeExecutableSchema } = require('graphql-tools');
21
22function graphql(options) {
23 return async request => {
24 let method = request.request.method;
25 let query = request.params;
26 let { graphqlResponse, responseInit } = await runHttpQuery([], {
27 method,
28 options,
29 query
30 });
31
32 return OK(graphqlResponse);
33 };
34}
35
36function graphiql(options) {
37 return async request => {
38 let query = request.params;
39 let response = await resolveGraphiQLString(query, options, request);
40
41 return HTMLString(response);
42 };
43}
44
45module.exports = {
46 graphiql,
47 graphql,
48 makeSchema: makeExecutableSchema
49};