|
|
|
@ -19,77 +19,77 @@ import (
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func GraphiQLHandler() func(http.ResponseWriter, *http.Request) {
|
|
|
|
|
graphiql_string := `
|
|
|
|
|
<!--
|
|
|
|
|
* Copyright (c) 2021 GraphQL Contributors
|
|
|
|
|
* All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* This source code is licensed under the license found in the
|
|
|
|
|
* LICENSE file in the root directory of this source tree.
|
|
|
|
|
-->
|
|
|
|
|
<!DOCTYPE html>
|
|
|
|
|
<html lang="en">
|
|
|
|
|
<head>
|
|
|
|
|
<title>GraphiQL</title>
|
|
|
|
|
<style>
|
|
|
|
|
body {
|
|
|
|
|
height: 100%;
|
|
|
|
|
margin: 0;
|
|
|
|
|
width: 100%;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#graphiql {
|
|
|
|
|
height: 100vh;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
|
|
|
|
|
return func(w http.ResponseWriter, r * http.Request) {
|
|
|
|
|
graphiql_string := fmt.Sprintf(`
|
|
|
|
|
<!--
|
|
|
|
|
This GraphiQL example depends on Promise and fetch, which are available in
|
|
|
|
|
modern browsers, but can be "polyfilled" for older browsers.
|
|
|
|
|
GraphiQL itself depends on React DOM.
|
|
|
|
|
If you do not want to rely on a CDN, you can host these files locally or
|
|
|
|
|
include them directly in your favored resource bundler.
|
|
|
|
|
* Copyright (c) 2021 GraphQL Contributors
|
|
|
|
|
* All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* This source code is licensed under the license found in the
|
|
|
|
|
* LICENSE file in the root directory of this source tree.
|
|
|
|
|
-->
|
|
|
|
|
<script
|
|
|
|
|
crossorigin
|
|
|
|
|
src="https://unpkg.com/react@18/umd/react.development.js"
|
|
|
|
|
></script>
|
|
|
|
|
<script
|
|
|
|
|
crossorigin
|
|
|
|
|
src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"
|
|
|
|
|
></script>
|
|
|
|
|
<!DOCTYPE html>
|
|
|
|
|
<html lang="en">
|
|
|
|
|
<head>
|
|
|
|
|
<title>GraphiQL</title>
|
|
|
|
|
<style>
|
|
|
|
|
body {
|
|
|
|
|
height: 100%%;
|
|
|
|
|
margin: 0;
|
|
|
|
|
width: 100%%;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
<!--
|
|
|
|
|
These two files can be found in the npm module, however you may wish to
|
|
|
|
|
copy them directly into your environment, or perhaps include them in your
|
|
|
|
|
favored resource bundler.
|
|
|
|
|
-->
|
|
|
|
|
<link rel="stylesheet" href="https://unpkg.com/graphiql/graphiql.min.css" />
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
<body>
|
|
|
|
|
<div id="graphiql">Loading...</div>
|
|
|
|
|
<script
|
|
|
|
|
src="https://unpkg.com/graphiql/graphiql.min.js"
|
|
|
|
|
type="application/javascript"
|
|
|
|
|
></script>
|
|
|
|
|
<script>
|
|
|
|
|
const root = ReactDOM.createRoot(document.getElementById('graphiql'));
|
|
|
|
|
root.render(
|
|
|
|
|
React.createElement(GraphiQL, {
|
|
|
|
|
fetcher: GraphiQL.createFetcher({
|
|
|
|
|
url: 'http://localhost:8080/gql',
|
|
|
|
|
#graphiql {
|
|
|
|
|
height: 100vh;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
|
|
|
|
|
<!--
|
|
|
|
|
This GraphiQL example depends on Promise and fetch, which are available in
|
|
|
|
|
modern browsers, but can be "polyfilled" for older browsers.
|
|
|
|
|
GraphiQL itself depends on React DOM.
|
|
|
|
|
If you do not want to rely on a CDN, you can host these files locally or
|
|
|
|
|
include them directly in your favored resource bundler.
|
|
|
|
|
-->
|
|
|
|
|
<script
|
|
|
|
|
crossorigin
|
|
|
|
|
src="https://unpkg.com/react@18/umd/react.development.js"
|
|
|
|
|
></script>
|
|
|
|
|
<script
|
|
|
|
|
crossorigin
|
|
|
|
|
src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"
|
|
|
|
|
></script>
|
|
|
|
|
|
|
|
|
|
<!--
|
|
|
|
|
These two files can be found in the npm module, however you may wish to
|
|
|
|
|
copy them directly into your environment, or perhaps include them in your
|
|
|
|
|
favored resource bundler.
|
|
|
|
|
-->
|
|
|
|
|
<link rel="stylesheet" href="https://unpkg.com/graphiql/graphiql.min.css" />
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
<body>
|
|
|
|
|
<div id="graphiql">Loading...</div>
|
|
|
|
|
<script
|
|
|
|
|
src="https://unpkg.com/graphiql/graphiql.min.js"
|
|
|
|
|
type="application/javascript"
|
|
|
|
|
></script>
|
|
|
|
|
<script>
|
|
|
|
|
const root = ReactDOM.createRoot(document.getElementById('graphiql'));
|
|
|
|
|
root.render(
|
|
|
|
|
React.createElement(GraphiQL, {
|
|
|
|
|
fetcher: GraphiQL.createFetcher({
|
|
|
|
|
url: '%s/gql',
|
|
|
|
|
}),
|
|
|
|
|
defaultEditorToolsVisibility: true,
|
|
|
|
|
}),
|
|
|
|
|
defaultEditorToolsVisibility: true,
|
|
|
|
|
}),
|
|
|
|
|
);
|
|
|
|
|
</script>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|
|
|
|
|
`
|
|
|
|
|
);
|
|
|
|
|
</script>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|
|
|
|
|
`, r.RequestURI)
|
|
|
|
|
|
|
|
|
|
return func(w http.ResponseWriter, r * http.Request) {
|
|
|
|
|
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
|
|
|
|
w.WriteHeader(http.StatusOK)
|
|
|
|
|
io.WriteString(w, graphiql_string)
|
|
|
|
|