// connect - opens a new connection to bigquery, reusing the token if possible or regenerating a new auth token if required func (c *Client) connect() (*bigquery.Service, error) { if c.token != nil { if !c.token.Valid() && c.service != nil { return c.service, nil } } // generate auth token and create service object //authScope := bigquery.BigqueryScope pemKeyBytes, err := ioutil.ReadFile(c.pemPath) if err != nil { panic(err) } t, err := google.JWTConfigFromJSON( pemKeyBytes, "https://www.googleapis.com/auth/bigquery") //t := jwt.NewToken(c.accountEmailAddress, bigquery.BigqueryScope, pemKeyBytes) client := t.Client(oauth2.NoContext) service, err := bigquery.New(client) if err != nil { return nil, err } c.service = service return service, nil }
func (c *Client) connect() (*bigquery.Service, error) { if c.token != nil { fmt.Println("token expired", c.token.Expired()) fmt.Println("token expiry", c.token.Expiry) if !c.token.Expired() && c.service != nil { fmt.Println("REUSE SERVICE") return c.service, nil } } // generate auth token and create service object authScope := bigquery.BigqueryScope pemKeyBytes, err := ioutil.ReadFile(c.pemPath) if err != nil { panic(err) } t := jwt.NewToken(c.accountEmailAddress, bigquery.BigqueryScope, pemKeyBytes) httpClient := &http.Client{} token, err := t.Assert(httpClient) if err != nil { return nil, err } c.token = token config := &oauth.Config{ ClientId: c.userAccountClientId, ClientSecret: c.clientSecret, Scope: authScope, AuthURL: "https://accounts.google.com/o/oauth2/auth", TokenURL: "https://accounts.google.com/o/oauth2/token", } transport := &oauth.Transport{ Token: token, Config: config, } client := transport.Client() service, err := bigquery.New(client) if err != nil { return nil, err } c.service = service return service, nil }