From 82106ee4e0015b5d5c9d0b8c436beca7a39c503e Mon Sep 17 00:00:00 2001 From: Bastian de Byl Date: Sun, 26 Feb 2023 02:01:02 -0500 Subject: [PATCH] added UpdateOrder function, fixed response statuscode handling --- go.mod | 2 +- snipcart/snipcart.go | 24 ++++++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a05f109..70f4770 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,6 @@ module github.com/debyltech/go-snipcart go 1.20 require ( - github.com/debyltech/go-helpers v0.0.0-20230224002154-eb55816c71ec + github.com/debyltech/go-helpers v1.0.1 github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e ) diff --git a/snipcart/snipcart.go b/snipcart/snipcart.go index 8413774..cc7569b 100644 --- a/snipcart/snipcart.go +++ b/snipcart/snipcart.go @@ -77,7 +77,7 @@ func (s *SnipcartProvider) GetOrder(token string) (*SnipcartOrder, error) { if err != nil { return nil, err } - if response.Status != "200 OK" { + if response.StatusCode < 200 && response.StatusCode >= 300 { return nil, fmt.Errorf("unexpected response received: %s", response.Status) } @@ -97,7 +97,7 @@ func (s *SnipcartProvider) GetOrders(queries map[string]string) (*SnipcartOrders if err != nil { return nil, err } - if response.Status != "200 OK" { + if response.StatusCode < 200 && response.StatusCode >= 300 { return nil, fmt.Errorf("unexpected response received: %s", response.Status) } @@ -128,3 +128,23 @@ func (o *SnipcartOrder) TokenPNGBase64() (string, error) { return base64.StdEncoding.EncodeToString(img), nil } + +func (s *SnipcartProvider) UpdateOrder(order *SnipcartOrder) (*SnipcartOrder, error) { + response, err := helper.Put(orderUri+"/"+order.Token, "Basic", s.AuthBase64, *order) + if err != nil { + return nil, err + } + if response.StatusCode < 200 && response.StatusCode >= 300 { + return nil, fmt.Errorf("unexpected response received: %s", response.Status) + } + + defer response.Body.Close() + + var responseOrder SnipcartOrder + err = json.NewDecoder(response.Body).Decode(&responseOrder) + if err != nil { + return nil, err + } + + return &responseOrder, nil +}