@@ -27,6 +27,7 @@ import (
2727 "slices"
2828 "sync"
2929
30+ "github.com/golang-jwt/jwt/v5"
3031 "github.com/pelletier/go-toml/v2"
3132)
3233
@@ -267,7 +268,7 @@ func UpdateCreds() error {
267268 })
268269}
269270
270- var licenseURI = "https://dbc-cf-api.columnar.workers.dev/trial_license"
271+ const licenseURI = "https://dbc-cf-api.columnar.workers.dev/trial_license"
271272
272273func FetchColumnarLicense (cred * Credential ) error {
273274 licensePath := filepath .Join (filepath .Dir (credPath ), "columnar.lic" )
@@ -280,19 +281,29 @@ func FetchColumnarLicense(cred *Credential) error {
280281 return err
281282 }
282283
283- req , err := http .NewRequest (http .MethodGet , licenseURI , nil )
284- if err != nil {
285- return err
286- }
287-
288284 var authToken string
289285 switch cred .Type {
290286 case TypeApiKey :
291287 authToken = cred .ApiKey
292288 case TypeToken :
289+ p := jwt .NewParser ()
290+ tk , err := p .Parse (cred .GetAuthToken (), nil )
291+ if err != nil && ! errors .Is (err , jwt .ErrTokenUnverifiable ) {
292+ return fmt .Errorf ("failed to parse oauth token: %w" , err )
293+ }
294+
295+ _ , ok := tk .Claims .(jwt.MapClaims )["urn:columnar:trial_start" ]
296+ if ! ok {
297+ return nil // not a trial account
298+ }
293299 authToken = "Bearer " + cred .GetAuthToken ()
294300 }
295301
302+ req , err := http .NewRequest (http .MethodGet , licenseURI , nil )
303+ if err != nil {
304+ return err
305+ }
306+
296307 req .Header .Add ("authorization" , authToken )
297308 resp , err := http .DefaultClient .Do (req )
298309 if err != nil {
0 commit comments