diff --git a/go.mod b/go.mod index f1c85be..5f25a3e 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module github.com/debyltech/go-snipcart go 1.20 + +require github.com/debyltech/go-helpers v0.0.0-20230224002154-eb55816c71ec diff --git a/snipcart/helper.go b/snipcart/helper.go deleted file mode 100644 index f34c66a..0000000 --- a/snipcart/helper.go +++ /dev/null @@ -1,39 +0,0 @@ -package snipcart - -import ( - "fmt" - "net/http" -) - -type URLQuery struct { - Key string - Value string -} - -func JSONGet(uri string, authName string, authValue string, queries []URLQuery) (*http.Response, error) { - client := &http.Client{} - - request, err := http.NewRequest("GET", uri, nil) - if err != nil { - return nil, err - } - request.Header.Set("Accept", "application/json") - request.Header.Set("Authorization", fmt.Sprintf("%s %s", authName, authValue)) - - if len(queries) > 0 { - q := request.URL.Query() - - for _, query := range queries { - q.Add(query.Key, query.Value) - } - - request.URL.RawQuery = q.Encode() - } - - response, err := client.Do(request) - if err != nil { - return nil, err - } - - return response, nil -} diff --git a/snipcart/snipcart.go b/snipcart/snipcart.go index a94f645..0444269 100644 --- a/snipcart/snipcart.go +++ b/snipcart/snipcart.go @@ -3,8 +3,10 @@ package snipcart import ( "encoding/base64" "encoding/json" + "errors" "fmt" - "strconv" + + helper "github.com/debyltech/go-helpers" ) const ( @@ -62,24 +64,8 @@ func NewSnipcartProvider(snipcartApiKey string) SnipcartProvider { } } -func (s *SnipcartProvider) GetOrders() (*SnipcartOrders, error) { - return s.GetOrdersByStatus("") -} - -func (s *SnipcartProvider) GetOrdersByStatus(status OrderStatus) (*SnipcartOrders, error) { - if s.Limit == 0 { - s.Limit = defaultLimit - } - - queries := []URLQuery{ - {Key: "limit", Value: strconv.Itoa(s.Limit)}, - } - - if status != "" { - queries = append(queries, URLQuery{Key: "status", Value: string(status)}) - } - - response, err := JSONGet(orderUri, "Basic", s.AuthBase64, queries) +func (s *SnipcartProvider) GetOrders(queries map[string]string) (*SnipcartOrders, error) { + response, err := helper.Get(orderUri, "Basic", s.AuthBase64, queries) if err != nil { return nil, err } @@ -97,3 +83,11 @@ func (s *SnipcartProvider) GetOrdersByStatus(status OrderStatus) (*SnipcartOrder return &orders, nil } + +func (s *SnipcartProvider) GetOrdersByStatus(status OrderStatus) (*SnipcartOrders, error) { + if status == "" { + return nil, errors.New("status is not set") + } + + return s.GetOrders(map[string]string{"status": string(status)}) +}