diff --git a/cmd/root.go b/cmd/root.go index d1f126c17..38e0b296f 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -54,6 +54,7 @@ import ( res "github.com/apigee/apigeecli/cmd/res" "github.com/apigee/apigeecli/cmd/securityprofiles" "github.com/apigee/apigeecli/cmd/sharedflows" + "github.com/apigee/apigeecli/cmd/sites" "github.com/apigee/apigeecli/cmd/sync" targetservers "github.com/apigee/apigeecli/cmd/targetservers" "github.com/apigee/apigeecli/cmd/token" @@ -180,6 +181,7 @@ func init() { RootCmd.AddCommand(apicategories.Cmd) RootCmd.AddCommand(datastores.Cmd) RootCmd.AddCommand(securityprofiles.Cmd) + RootCmd.AddCommand(sites.Cmd) } func initConfig() { diff --git a/cmd/sites/list.go b/cmd/sites/list.go new file mode 100644 index 000000000..7ea7b1924 --- /dev/null +++ b/cmd/sites/list.go @@ -0,0 +1,36 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package sites + +import ( + "internal/apiclient" + "internal/client/sites" + + "github.com/spf13/cobra" +) + +// ListCmd to list catalog items +var ListCmd = &cobra.Command{ + Use: "list", + Short: "Returns the API Portals associated with the org", + Long: "Returns the API Portals associated with the org", + Args: func(cmd *cobra.Command, args []string) (err error) { + return apiclient.SetApigeeOrg(org) + }, + RunE: func(cmd *cobra.Command, args []string) (err error) { + _, err = sites.List() + return + }, +} diff --git a/cmd/sites/sites.go b/cmd/sites/sites.go new file mode 100644 index 000000000..4f1791c7b --- /dev/null +++ b/cmd/sites/sites.go @@ -0,0 +1,37 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package sites + +import ( + "github.com/spf13/cobra" +) + +// Cmd to manage +var Cmd = &cobra.Command{ + Use: "sites", + Short: "Manage Apigee API Portals", + Long: "Manage Apigee API Portals", +} + +var org, siteid, id, name string + +func init() { + Cmd.PersistentFlags().StringVarP(&org, "org", "o", + "", "Apigee organization name") + + Cmd.AddCommand(ListCmd) + + _ = Cmd.MarkFlagRequired("org") +} diff --git a/internal/client/sites/sites.go b/internal/client/sites/sites.go new file mode 100644 index 000000000..a349c2119 --- /dev/null +++ b/internal/client/sites/sites.go @@ -0,0 +1,48 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package sites + +import ( + "internal/apiclient" + "net/url" + "path" + + "github.com/thedevsaddam/gojsonq" +) + +// List +func List() (respBody []byte, err error) { + u, _ := url.Parse(apiclient.BaseURL) + u.Path = path.Join(u.Path, apiclient.GetApigeeOrg(), "sites") + respBody, err = apiclient.HttpClient(u.String()) + return respBody, err +} + +// GetSiteIDs +func GetSiteIDs() (siteIDs []string, err error) { + apiclient.ClientPrintHttpResponse.Set(false) + defer apiclient.ClientPrintHttpResponse.Set(apiclient.GetCmdPrintHttpResponseSetting()) + respBody, err := List() + if err != nil { + return nil, err + } + jq := gojsonq.New().JSONString(string(respBody)) + ids := jq.From("data").Pluck("id").([]interface{}) + siteIDs = make([]string, len(ids)) + for k, v := range ids { + siteIDs[k] = v.(string) + } + return siteIDs, nil +}