github.com/jcarley/cli@v0.0.0-20180201210820-966d90434c30/commands/keys/list.go (about) 1 package keys 2 3 import ( 4 "crypto/sha256" 5 "encoding/base64" 6 "fmt" 7 "strings" 8 9 "github.com/Sirupsen/logrus" 10 "github.com/daticahealth/cli/commands/deploykeys" 11 "github.com/daticahealth/cli/models" 12 "github.com/olekukonko/tablewriter" 13 ) 14 15 func CmdList(ik IKeys, id deploykeys.IDeployKeys) error { 16 keys, err := ik.List() 17 if err != nil { 18 return err 19 } 20 21 if keys == nil || len(*keys) == 0 { 22 logrus.Println("No keys found") 23 return nil 24 } 25 26 invalidKeys := map[string]string{} 27 28 data := [][]string{{"NAME", "FINGERPRINT"}} 29 for _, key := range *keys { 30 s, err := id.ParsePublicKey([]byte(key.Key)) 31 if err != nil { 32 invalidKeys[key.Name] = err.Error() 33 continue 34 } 35 h := sha256.New() 36 h.Write(s.Marshal()) 37 fingerprint := base64.StdEncoding.EncodeToString(h.Sum(nil)) 38 data = append(data, []string{key.Name, fmt.Sprintf("SHA256:%s", strings.TrimRight(fingerprint, "="))}) 39 } 40 41 table := tablewriter.NewWriter(logrus.StandardLogger().Out) 42 table.SetBorder(false) 43 table.SetRowLine(false) 44 table.SetCenterSeparator("") 45 table.SetColumnSeparator("") 46 table.SetRowSeparator("") 47 table.AppendBulk(data) 48 table.Render() 49 50 if len(invalidKeys) > 0 { 51 logrus.Println("\nInvalid Keys:") 52 for keyName, reason := range invalidKeys { 53 logrus.Printf("%s: %s", keyName, reason) 54 } 55 } 56 return nil 57 } 58 59 func (k *SKeys) List() (*[]models.UserKey, error) { 60 headers := k.Settings.HTTPManager.GetHeaders(k.Settings.SessionToken, k.Settings.Version, k.Settings.Pod, k.Settings.UsersID) 61 resp, status, err := k.Settings.HTTPManager.Get(nil, fmt.Sprintf("%s%s/keys", k.Settings.AuthHost, k.Settings.AuthHostVersion), headers) 62 if err != nil { 63 return nil, err 64 } 65 66 keys := []models.UserKey{} 67 err = k.Settings.HTTPManager.ConvertResp(resp, status, &keys) 68 return &keys, err 69 }