add list keys

This commit is contained in:
Adora Laura Kalb 2023-06-11 19:29:56 +02:00
parent f6d8fd4da9
commit 9bc47d40a6
Signed by: adoralaura
GPG key ID: 7A4552166FC8C056
6 changed files with 104 additions and 7 deletions

2
.gitignore vendored
View file

@ -100,3 +100,5 @@ fabric.properties
.idea/caches/build_file_checksums.ser
.idea/
.env
!examples/**

36
app/app.go Normal file
View file

@ -0,0 +1,36 @@
package app
import (
"github.com/ovh/go-ovh/ovh"
"github.com/spf13/viper"
"log"
)
type ApplicationAllResponse struct {
Applications []int
}
type Application struct {
ApplicationID int `json:"applicationId"`
ApplicationKey string `json:"applicationKey"`
Description string `json:"description"`
Name string `json:"name"`
Status string `json:"status"`
}
func GetOVHClient() *ovh.Client {
if viper.GetString("OVH_APPLICATIONKEY") == "" ||
viper.GetString("OVH_APPLICATIONSECRET") == "" ||
viper.GetString("OVH_CONSUMERKEY") == "" ||
viper.GetString("OVH_REGION") == "" {
log.Fatalln("We're missing a configuration variable in .env. Please recheck the config file.")
}
client, _ := ovh.NewClient(
viper.GetString("OVH_REGION"),
viper.GetString("OVH_APPLICATIONKEY"),
viper.GetString("OVH_APPLICATIONSECRET"),
viper.GetString("OVH_CONSUMERKEY"),
)
return client
}

View file

@ -1,12 +1,15 @@
/*
Copyright © 2023 NAME HERE <EMAIL ADDRESS>
Copyright © 2023 Laura Kalb <dev@lauka.net>
*/
package cmd
import (
"codeberg.org/lauralani/ovh-apikey-manager/app"
"fmt"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"log"
"strconv"
)
// listCmd represents the list command
@ -15,7 +18,37 @@ var listCmd = &cobra.Command{
Short: "List all active API Keys",
Long: `Lists all of your currently active API Keys`,
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("list called")
client := app.GetOVHClient()
var applist []app.Application
var appresponselist []int
err := client.Get("/me/api/application", &appresponselist)
if err != nil {
log.Fatalf("Error getting application list: %v", err.Error())
}
for _, appid := range appresponselist {
var application app.Application
err := client.Get("/me/api/application/"+strconv.Itoa(appid), &application)
if err != nil {
log.Fatalf("Error getting application %v: %v", appid, err.Error())
}
applist = append(applist, application)
}
fmt.Println("List of current API-Keys:")
fmt.Println("Format: ID: [status] name (description)")
fmt.Printf("\"*\" shows API key used by this application\n\n")
for _, item := range applist {
iscurrentkey := " "
if item.ApplicationKey == viper.GetString("OVH_APPLICATIONKEY") {
iscurrentkey = "* "
}
fmt.Printf("%v%v: [%v] %v (%v)\n", iscurrentkey, item.ApplicationID, item.Status, item.Name, item.Description)
}
},
}

View file

@ -1,9 +1,11 @@
/*
Copyright © 2023 NAME HERE <EMAIL ADDRESS>
Copyright © 2023 Laura Kalb <dev@lauka.net>
*/
package cmd
import (
"github.com/spf13/viper"
"log"
"os"
"github.com/spf13/cobra"
@ -22,7 +24,14 @@ var rootCmd = &cobra.Command{
// Execute adds all child commands to the root command and sets flags appropriately.
// This is called by main.main(). It only needs to happen once to the rootCmd.
func Execute() {
err := rootCmd.Execute()
viper.SetConfigFile(".env") // Search for a config file named .env
viper.AddConfigPath(".") // in the working dir of the app
err := viper.ReadInConfig() // Find and read the config file
if err != nil { // Handle errors reading the config file
log.Fatalln("Couldn't find config file at ./.env")
}
err = rootCmd.Execute()
if err != nil {
os.Exit(1)
}

17
examples/.env Normal file
View file

@ -0,0 +1,17 @@
# OVH API Region. Possible values:
# - Europe: ovh-eu
# - USA: ovh-us
# - Canada: ovh-ca
OVH_REGION=ovh-eu
## OVH API Key details
## Yes, i know the irony that you have to have an API key to view API keys
## You can get a minimal permission API key by visiting
## https://api.ovh.com/createToken/?GET=/me/api/application&GET=/me/api/application/*&DELETE=/me/api/application/*
## Just login with your credentials and fill out the Name and then you have your API key
OVH_APPLICATIONKEY=
OVH_APPLICATIONSECRET=
OVH_CONSUMERKEY=

View file

@ -1,5 +1,5 @@
/*
Copyright © 2023 NAME HERE <EMAIL ADDRESS>
Copyright © 2023 2023 Laura Kalb <dev@lauka.net>
*/
package main