genql: quick hack at variables

This commit is contained in:
Ben Kraft
2020-01-02 17:52:55 -08:00
parent 77670363d3
commit 9746c818fd
7 changed files with 111 additions and 30 deletions
+14 -2
View File
@@ -34,6 +34,12 @@ func Main() {
return
}
if len(os.Args) != 2 {
err = fmt.Errorf("usage: %v <username>", os.Args[0])
return
}
username := os.Args[1]
httpClient := http.Client{
Transport: &authedTransport{
key: key,
@@ -41,10 +47,16 @@ func Main() {
},
}
graphqlClient := graphql.NewClient("https://api.github.com/graphql", &httpClient)
resp, err := getViewer(context.Background(), graphqlClient)
viewerResp, err := getViewer(context.Background(), graphqlClient)
if err != nil {
return
}
fmt.Println("you are", *viewerResp.Viewer.Name)
fmt.Println("you are:", *resp.Viewer.Name)
userResp, err := getUser(context.Background(), graphqlClient, username)
if err != nil {
return
}
fmt.Println(username, "is", *userResp.User.Name)
}
+27 -1
View File
@@ -14,6 +14,7 @@ type getViewerResponse = struct {
// TODO
func getViewer(ctx context.Context, client *graphql.Client) (*getViewerResponse, error) {
var retval getViewerResponse
err := client.MakeRequest(ctx, `
query getViewer {
@@ -21,6 +22,31 @@ query getViewer {
Name: name
}
}
`, &retval)
`, &retval, nil)
return &retval, err
}
type getUserResponse = struct {
User *struct {
Name *string
}
}
// TODO
func getUser(ctx context.Context, client *graphql.Client, login string) (*getUserResponse, error) {
variables := map[string]interface{}{
"login": login,
}
var retval getUserResponse
err := client.MakeRequest(ctx, `
query getUser ($login: String!) {
User: user(login: $login) {
Name: name
}
}
`, &retval, variables)
return &retval, err
}
+7
View File
@@ -4,3 +4,10 @@ query getViewer {
Name: name
}
}
# getUser gets the given user's name.
query getUser($login: String!) {
User: user(login: $login) {
Name: name
}
}