github.com/Desuuuu/genqlient@v0.5.3/example/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "net/http" 7 "os" 8 9 "github.com/Desuuuu/genqlient/graphql" 10 ) 11 12 type authedTransport struct { 13 key string 14 wrapped http.RoundTripper 15 } 16 17 func (t *authedTransport) RoundTrip(req *http.Request) (*http.Response, error) { 18 req.Header.Set("Authorization", "bearer "+t.key) 19 return t.wrapped.RoundTrip(req) 20 } 21 22 func main() { 23 var err error 24 defer func() { 25 if err != nil { 26 fmt.Println(err) 27 os.Exit(1) 28 } 29 }() 30 31 key := os.Getenv("GITHUB_TOKEN") 32 if key == "" { 33 err = fmt.Errorf("must set GITHUB_TOKEN=<github token>") 34 return 35 } 36 37 httpClient := http.Client{ 38 Transport: &authedTransport{ 39 key: key, 40 wrapped: http.DefaultTransport, 41 }, 42 } 43 graphqlClient := graphql.NewClient("https://api.github.com/graphql", &httpClient) 44 45 switch len(os.Args) { 46 case 1: 47 var viewerResp *getViewerResponse 48 viewerResp, err = getViewer(context.Background(), graphqlClient) 49 if err != nil { 50 return 51 } 52 fmt.Println("you are", viewerResp.Viewer.MyName, "created on", viewerResp.Viewer.CreatedAt.Format("2006-01-02")) 53 54 case 2: 55 username := os.Args[1] 56 var userResp *getUserResponse 57 userResp, err = getUser(context.Background(), graphqlClient, username) 58 if err != nil { 59 return 60 } 61 fmt.Println(username, "is", userResp.User.TheirName, "created on", userResp.User.CreatedAt.Format("2006-01-02")) 62 63 default: 64 err = fmt.Errorf("usage: %v [username]", os.Args[0]) 65 } 66 } 67 68 //go:generate go run github.com/Desuuuu/genqlient genqlient.yaml