mirror of
https://github.com/schollz/cowyo.git
synced 2023-08-10 21:13:00 +03:00
Vendoring
This commit is contained in:
105
vendor/github.com/shurcooL/graphql/example/graphqldev/main.go
generated
vendored
Normal file
105
vendor/github.com/shurcooL/graphql/example/graphqldev/main.go
generated
vendored
Normal file
@@ -0,0 +1,105 @@
|
||||
// graphqldev is a test program currently being used for developing graphql package.
|
||||
// It performs queries against a local test GraphQL server instance.
|
||||
//
|
||||
// It's not meant to be a clean or readable example. But it's functional.
|
||||
// Better, actual examples will be created in the future.
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"os"
|
||||
|
||||
graphqlserver "github.com/neelance/graphql-go"
|
||||
"github.com/neelance/graphql-go/example/starwars"
|
||||
"github.com/neelance/graphql-go/relay"
|
||||
"github.com/shurcooL/graphql"
|
||||
)
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
err := run()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
}
|
||||
|
||||
func run() error {
|
||||
// Set up a GraphQL server.
|
||||
schema, err := graphqlserver.ParseSchema(starwars.Schema, &starwars.Resolver{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
mux := http.NewServeMux()
|
||||
mux.Handle("/query", &relay.Handler{Schema: schema})
|
||||
|
||||
client := graphql.NewClient("/query", &http.Client{Transport: localRoundTripper{handler: mux}}, nil)
|
||||
|
||||
/*
|
||||
query {
|
||||
hero {
|
||||
id
|
||||
name
|
||||
}
|
||||
character(id: "1003") {
|
||||
name
|
||||
friends {
|
||||
name
|
||||
__typename
|
||||
}
|
||||
appearsIn
|
||||
}
|
||||
}
|
||||
*/
|
||||
var q struct {
|
||||
Hero struct {
|
||||
ID graphql.ID
|
||||
Name graphql.String
|
||||
}
|
||||
Character struct {
|
||||
Name graphql.String
|
||||
Friends []struct {
|
||||
Name graphql.String
|
||||
Typename graphql.String `graphql:"__typename"`
|
||||
}
|
||||
AppearsIn []graphql.String
|
||||
} `graphql:"character(id: $characterID)"`
|
||||
}
|
||||
variables := map[string]interface{}{
|
||||
"characterID": graphql.ID("1003"),
|
||||
}
|
||||
err = client.Query(context.Background(), &q, variables)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
print(q)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// print pretty prints v to stdout. It panics on any error.
|
||||
func print(v interface{}) {
|
||||
w := json.NewEncoder(os.Stdout)
|
||||
w.SetIndent("", "\t")
|
||||
err := w.Encode(v)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
// localRoundTripper is an http.RoundTripper that executes HTTP transactions
|
||||
// by using handler directly, instead of going over an HTTP connection.
|
||||
type localRoundTripper struct {
|
||||
handler http.Handler
|
||||
}
|
||||
|
||||
func (l localRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||
w := httptest.NewRecorder()
|
||||
l.handler.ServeHTTP(w, req)
|
||||
return w.Result(), nil
|
||||
}
|
||||
Reference in New Issue
Block a user