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