Skip to content

Commit

Permalink
feat: adds support to list sites #345
Browse files Browse the repository at this point in the history
  • Loading branch information
srinandan committed Dec 2, 2023
1 parent 9d3ff8b commit 36be91f
Show file tree
Hide file tree
Showing 4 changed files with 123 additions and 0 deletions.
2 changes: 2 additions & 0 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -180,6 +181,7 @@ func init() {
RootCmd.AddCommand(apicategories.Cmd)
RootCmd.AddCommand(datastores.Cmd)
RootCmd.AddCommand(securityprofiles.Cmd)
RootCmd.AddCommand(sites.Cmd)
}

func initConfig() {
Expand Down
36 changes: 36 additions & 0 deletions cmd/sites/list.go
Original file line number Diff line number Diff line change
@@ -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
},
}
37 changes: 37 additions & 0 deletions cmd/sites/sites.go
Original file line number Diff line number Diff line change
@@ -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

Check failure on line 28 in cmd/sites/sites.go

View workflow job for this annotation

GitHub Actions / lint

var `siteid` is unused (unused)

Check failure on line 28 in cmd/sites/sites.go

View workflow job for this annotation

GitHub Actions / lint

var `siteid` is unused (unused)

func init() {
Cmd.PersistentFlags().StringVarP(&org, "org", "o",
"", "Apigee organization name")

Cmd.AddCommand(ListCmd)

_ = Cmd.MarkFlagRequired("org")
}
48 changes: 48 additions & 0 deletions internal/client/sites/sites.go
Original file line number Diff line number Diff line change
@@ -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
}

0 comments on commit 36be91f

Please sign in to comment.