feat(cli): show license_expires as rfc3339 date instead of unix time (#7687)

* feat(licenses): show license_expires time as rfc3339 date

* fix review comments
This commit is contained in:
Rodrigo Maia 2023-05-26 11:36:26 -03:00 committed by GitHub
parent 66f5d39ff5
commit 61dc875454
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 1 deletions

View File

@ -8,6 +8,7 @@ import (
"regexp"
"strconv"
"strings"
"time"
"golang.org/x/xerrors"
@ -154,6 +155,14 @@ func (r *RootCmd) licensesList() *clibase.Cmd {
licenses = make([]codersdk.License, 0)
}
for i, license := range licenses {
newClaims, err := convertLicenseExpireTime(license.Claims)
if err != nil {
return err
}
licenses[i].Claims = newClaims
}
enc := json.NewEncoder(inv.Stdout)
enc.SetIndent("", " ")
return enc.Encode(licenses)
@ -187,3 +196,29 @@ func (r *RootCmd) licenseDelete() *clibase.Cmd {
}
return cmd
}
func convertLicenseExpireTime(licenseClaims map[string]interface{}) (map[string]interface{}, error) {
if licenseClaims["license_expires"] != nil {
licenseExpiresNumber, ok := licenseClaims["license_expires"].(json.Number)
if !ok {
return licenseClaims, xerrors.Errorf("could not convert license_expires to json.Number")
}
licenseExpires, err := licenseExpiresNumber.Int64()
if err != nil {
return licenseClaims, xerrors.Errorf("could not convert license_expires to int64: %w", err)
}
t := time.Unix(licenseExpires, 0)
rfc3339Format := t.Format(time.RFC3339)
claimsCopy := make(map[string]interface{}, len(licenseClaims))
for k, v := range licenseClaims {
claimsCopy[k] = v
}
claimsCopy["license_expires"] = rfc3339Format
return claimsCopy, nil
}
return licenseClaims, nil
}

View File

@ -158,6 +158,7 @@ func TestLicensesListFake(t *testing.T) {
assert.Equal(t, "claim1", licenses[0].Claims["h1"])
assert.Equal(t, int32(5), licenses[1].ID)
assert.Equal(t, "claim2", licenses[1].Claims["h2"])
assert.Equal(t, "2024-04-06T16:53:35Z", licenses[0].Claims["license_expires"])
})
}
@ -294,7 +295,8 @@ func (s *fakeLicenseAPI) licenses(rw http.ResponseWriter, _ *http.Request) {
ID: 1,
UploadedAt: time.Now(),
Claims: map[string]interface{}{
"h1": "claim1",
"license_expires": 1712422415,
"h1": "claim1",
"features": map[string]int64{
"f1": 1,
"f2": 2,