From d77eece5bda068c1863b8c6c00017e3b287d84d3 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 25 Jan 2021 15:58:20 -0300 Subject: [PATCH] feat: Add 'apis list' --- internal/auth/auth.go | 2 +- internal/cli/apis.go | 42 ++++++++++++++++++++++++++++++++++++++++ internal/cli/root.go | 1 + internal/display/apis.go | 37 +++++++++++++++++++++++++++++++++++ 4 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 internal/cli/apis.go create mode 100644 internal/display/apis.go diff --git a/internal/auth/auth.go b/internal/auth/auth.go index 0e74768a4..28084a41c 100644 --- a/internal/auth/auth.go +++ b/internal/auth/auth.go @@ -33,7 +33,7 @@ const ( deviceCodeEndpoint = "https://auth0.auth0.com/oauth/device/code" oauthTokenEndpoint = "https://auth0.auth0.com/oauth/token" // TODO(jfatta) extend the scope as we extend the CLI: - scope = "openid read:roles read:clients read:logs read:rules" + scope = "openid read:roles read:clients read:resource_servers read:logs read:rules" audiencePath = "/api/v2/" ) diff --git a/internal/cli/apis.go b/internal/cli/apis.go new file mode 100644 index 000000000..381f3b189 --- /dev/null +++ b/internal/cli/apis.go @@ -0,0 +1,42 @@ +package cli + +import ( + "github.com/spf13/cobra" + "gopkg.in/auth0.v5/management" +) + +func apisCmd(cli *cli) *cobra.Command { + cmd := &cobra.Command{ + Use: "apis", + Short: "manage resources for APIs.", + } + + cmd.SetUsageTemplate(resourceUsageTemplate()) + cmd.AddCommand(listApisCmd(cli)) + + return cmd +} + +func listApisCmd(cli *cli) *cobra.Command { + cmd := &cobra.Command{ + Use: "list", + Short: "Lists your existing APIs", + Long: `$ auth0 apis list +Lists your existing APIs. To create one try: + + $ auth0 apis create +`, + RunE: func(cmd *cobra.Command, args []string) error { + list, err := cli.api.ResourceServer.List(management.IncludeTotals(false)) + + if err != nil { + return err + } + + cli.renderer.ApisList(list.ResourceServers) + return nil + }, + } + + return cmd +} diff --git a/internal/cli/root.go b/internal/cli/root.go index 585d3d491..c5b3837cb 100644 --- a/internal/cli/root.go +++ b/internal/cli/root.go @@ -52,6 +52,7 @@ func Execute() { rootCmd.AddCommand(loginCmd(cli)) rootCmd.AddCommand(clientsCmd(cli)) + rootCmd.AddCommand(apisCmd(cli)) rootCmd.AddCommand(logsCmd(cli)) rootCmd.AddCommand(rulesCmd(cli)) diff --git a/internal/display/apis.go b/internal/display/apis.go new file mode 100644 index 000000000..c092c6a9c --- /dev/null +++ b/internal/display/apis.go @@ -0,0 +1,37 @@ +package display + +import ( + "github.com/auth0/auth0-cli/internal/ansi" + "gopkg.in/auth0.v5" + "gopkg.in/auth0.v5/management" +) + +type apiView struct { + ID string + Name string + Identifier string +} + +func (v *apiView) AsTableHeader() []string { + return []string{"ID", "Name", "Identifier"} +} + +func (v *apiView) AsTableRow() []string { + return []string{v.ID, v.Name, ansi.Faint(v.Identifier)} +} + +func (r *Renderer) ApisList(apis []*management.ResourceServer) { + r.Heading(ansi.Bold(r.Tenant), "APIs\n") + + var res []View + + for _, api := range apis { + res = append(res, &apiView{ + ID: auth0.StringValue(api.ID), + Name: appTypeFor(api.Name), + Identifier: auth0.StringValue(api.Identifier), + }) + } + + r.Results(res) +}