Skip to content

Commit

Permalink
feat (account-api): implement GetExtensionByName and GetExtensionById
Browse files Browse the repository at this point in the history
  • Loading branch information
shyim committed Jan 15, 2022
1 parent c57ea12 commit f870d2c
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 4 deletions.
69 changes: 66 additions & 3 deletions account-api/producer.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ import (
"bytes"
"encoding/json"
"fmt"
"github.com/gorilla/schema"
"net/url"
"strconv"
"strings"
)

type producerEndpoint struct {
Expand Down Expand Up @@ -110,8 +114,25 @@ type producer struct {
CancelledContract interface{} `json:"cancelledContract"`
}

func (e producerEndpoint) Extensions() ([]extension, error) {
r, err := e.c.NewAuthenticatedRequest("GET", fmt.Sprintf("%s/plugins?producerId=%d&limit=100&orderBy=name&orderSequence=asc", ApiUrl, e.GetId()), nil)
type ListExtensionCriteria struct {
Limit int `schema:"limit,omitempty"`
Offset int `schema:"offset,omitempty"`
OrderBy string `schema:"orderBy,omitempty"`
OrderSequence string `schema:"orderSequence,omitempty"`
Search string `schema:"search,omitempty"`
}

func (e producerEndpoint) Extensions(criteria *ListExtensionCriteria) ([]extension, error) {
encoder := schema.NewEncoder()
form := url.Values{}
form.Set("producerId", strconv.FormatInt(int64(e.GetId()), 10))
err := encoder.Encode(criteria, form)

if err != nil {
return nil, fmt.Errorf("list_extensions: %v", err)
}

r, err := e.c.NewAuthenticatedRequest("GET", fmt.Sprintf("%s/plugins?%s", ApiUrl, form.Encode()), nil)
if err != nil {
return nil, err
}
Expand All @@ -130,6 +151,48 @@ func (e producerEndpoint) Extensions() ([]extension, error) {
return extensions, nil
}

func (e producerEndpoint) GetExtensionByName(name string) (*extension, error) {
criteria := ListExtensionCriteria{
Search: name,
}

extensions, err := e.Extensions(&criteria)

if err != nil {
return nil, err
}

for _, ext := range extensions {
if strings.ToLower(ext.Name) == strings.ToLower(name) {
return e.GetExtensionById(ext.Id)
}
}

return nil, fmt.Errorf("cannot find extension by name %s", name)
}

func (e producerEndpoint) GetExtensionById(id int) (*extension, error) {
// Create it
r, err := e.c.NewAuthenticatedRequest("GET", fmt.Sprintf("%s/plugins/%d", ApiUrl, id), nil)

if err != nil {
return nil, fmt.Errorf("GetExtensionById: %v", err)
}

body, err := e.c.doRequest(r)

if err != nil {
return nil, fmt.Errorf("GetExtensionById: %v", err)
}

var extension extension
if err := json.Unmarshal(body, &extension); err != nil {
return nil, fmt.Errorf("GetExtensionById: %v", err)
}

return &extension, nil
}

type extension struct {
Id int `json:"id"`
Producer struct {
Expand Down Expand Up @@ -266,7 +329,7 @@ type extension struct {
IsEnterpriseAccelerator bool `json:"isEnterpriseAccelerator"`
IsSW6EnterpriseFeature bool `json:"isSW6EnterpriseFeature"`
IsSW6ProfessionalEditionFeature bool `json:"isSW6ProfessionalEditionFeature"`
Binaries string `json:"binaries"`
Binaries interface{} `json:"binaries"`
Predecessor interface{} `json:"predecessor"`
Successor interface{} `json:"successor"`
IsCompatibleWithLatestShopwareVersion bool `json:"isCompatibleWithLatestShopwareVersion"`
Expand Down
16 changes: 15 additions & 1 deletion cmd/account_producer_extension_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"github.com/spf13/cobra"
"log"
"os"
account_api "shopware-cli/account-api"
"strconv"
)

Expand All @@ -22,7 +23,17 @@ var accountCompanyProducerExtensionListCmd = &cobra.Command{
os.Exit(1)
}

extensions, err := p.Extensions()
criteria := account_api.ListExtensionCriteria{
Limit: 100,
}

if len(listExtensionSearch) > 0 {
criteria.Search = listExtensionSearch
criteria.OrderBy = "name"
criteria.OrderSequence = "asc"
}

extensions, err := p.Extensions(&criteria)

if err != nil {
log.Fatalln(err)
Expand Down Expand Up @@ -55,6 +66,9 @@ var accountCompanyProducerExtensionListCmd = &cobra.Command{
},
}

var listExtensionSearch string

func init() {
accountCompanyProducerExtensionCmd.AddCommand(accountCompanyProducerExtensionListCmd)
accountCompanyProducerExtensionListCmd.Flags().StringVar(&listExtensionSearch, "search", "", "Filter for name")
}
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ go 1.17

require (
github.com/fatih/color v1.13.0
github.com/gorilla/schema v1.2.0
github.com/hashicorp/go-version v1.4.0
github.com/manifoldco/promptui v0.9.0
github.com/olekukonko/tablewriter v0.0.5
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,8 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM=
github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc=
github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M=
github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0=
Expand Down

0 comments on commit f870d2c

Please sign in to comment.