Skip to content

Commit 15a3699

Browse files
author
David Zingerman
committed
better status error
1 parent 1cd49e1 commit 15a3699

File tree

18 files changed

+57
-46
lines changed

18 files changed

+57
-46
lines changed

internal/errors/erply.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package errors
22

33
import (
44
"fmt"
5+
"github.com/erply/api-go-wrapper/pkg/api/common"
56
"github.com/pkg/errors"
67
)
78

@@ -15,10 +16,21 @@ func (e *ErplyError) Error() string {
1516
return fmt.Sprintf("ERPLY API: %s status: %s", e.Message, e.Status)
1617
}
1718

18-
func NewErplyError(status string, msg string) *ErplyError {
19+
func NewErplyError(status, msg string) *ErplyError {
1920
return &ErplyError{Status: status, Message: msg}
2021
}
2122

23+
func NewFromResponseStatus(status *common.Status) *ErplyError {
24+
var s string
25+
if status.ErrorField != "" {
26+
s = fmt.Sprintf("%s, error field: %s", status.ErrorCode.String(), status.ErrorField)
27+
} else {
28+
s = status.ErrorCode.String()
29+
}
30+
m := status.Request + ": " + status.ResponseStatus
31+
return &ErplyError{Status: s, Message: m}
32+
}
33+
2234
func NewFromError(msg string, err error) *ErplyError {
2335
if err != nil {
2436
return NewErplyError("Error", errors.Wrap(err, msg).Error())

pkg/api/addresses/addressRequests.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func (cli *Client) GetAddresses(ctx context.Context, filters map[string]string)
2222
}
2323

2424
if !common.IsJSONResponseOK(&res.Status) {
25-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
25+
return nil, erro.NewFromResponseStatus(&res.Status)
2626
}
2727

2828
return res.Addresses, nil
@@ -77,7 +77,7 @@ func (cli *Client) SaveAddress(ctx context.Context, filters map[string]string) (
7777
}
7878

7979
if !common.IsJSONResponseOK(&res.Status) {
80-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
80+
return nil, erro.NewFromResponseStatus(&res.Status)
8181
}
8282

8383
if len(res.Addresses) == 0 {
@@ -131,4 +131,3 @@ func (cli *Client) SaveAddressesBulk(ctx context.Context, addrMap []map[string]i
131131

132132
return saveAddressesResponseBulk, nil
133133
}
134-

pkg/api/auth/authRequests.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func VerifyUser(username, password, clientCode string, client *http.Client) (str
3939
}
4040

4141
if res.Status.ErrorCode != 0 {
42-
return "", erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
42+
return "", erro.NewFromResponseStatus(&res.Status)
4343
}
4444

4545
if len(res.Records) < 1 {

pkg/api/auth/tokenRequsts.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func (cli *Client) VerifyIdentityToken(ctx context.Context, jwt string) (*Sessio
2727
}
2828

2929
if !common.IsJSONResponseOK(&res.Status) {
30-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
30+
return nil, erro.NewFromResponseStatus(&res.Status)
3131
}
3232

3333
return &res.Result, nil
@@ -47,7 +47,7 @@ func (cli *Client) GetIdentityToken(ctx context.Context) (*IdentityToken, error)
4747
}
4848

4949
if !common.IsJSONResponseOK(&res.Status) {
50-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
50+
return nil, erro.NewFromResponseStatus(&res.Status)
5151
}
5252

5353
return &res.Result, nil
@@ -67,7 +67,7 @@ func (cli *Client) GetJWTToken(ctx context.Context) (*JwtToken, error) {
6767
return nil, erro.NewFromError("error decoding GetJWTToken response", err)
6868
}
6969
if !common.IsJSONResponseOK(&res.Status) {
70-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
70+
return nil, erro.NewFromResponseStatus(&res.Status)
7171
}
7272

7373
return &res.Records, nil
@@ -87,7 +87,7 @@ func (cli *PartnerClient) GetJWTToken(ctx context.Context) (*JwtToken, error) {
8787
return nil, erro.NewFromError("error decoding GetJWTToken response", err)
8888
}
8989
if !common.IsJSONResponseOK(&res.Status) {
90-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
90+
return nil, erro.NewFromResponseStatus(&res.Status)
9191
}
9292

9393
return &res.Records, nil

pkg/api/company/companyInfoRequests.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func (cli *Client) GetCompanyInfo(ctx context.Context) (*Info, error) {
1919
}
2020

2121
if !common.IsJSONResponseOK(&res.Status) {
22-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
22+
return nil, erro.NewFromResponseStatus(&res.Status)
2323
}
2424

2525
if len(res.CompanyInfos) == 0 {

pkg/api/company/confParameterRequests.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func (cli *Client) GetConfParameters(ctx context.Context) (*ConfParameter, error
2020
}
2121

2222
if !common.IsJSONResponseOK(&res.Status) {
23-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
23+
return nil, erro.NewFromResponseStatus(&res.Status)
2424
}
2525

2626
if len(res.ConfParameters) == 0 {

pkg/api/customers/customerRequests.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func (cli *Client) SaveCustomer(ctx context.Context, filters map[string]string)
2323
}
2424

2525
if !common.IsJSONResponseOK(&res.Status) {
26-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
26+
return nil, erro.NewFromResponseStatus(&res.Status)
2727
}
2828

2929
if len(res.CustomerImportReports) == 0 {
@@ -44,7 +44,7 @@ func (cli *Client) GetCustomers(ctx context.Context, filters map[string]string)
4444
return nil, erro.NewFromError("failed to unmarshal GetCustomersResponse", err)
4545
}
4646
if !common.IsJSONResponseOK(&res.Status) {
47-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
47+
return nil, erro.NewFromResponseStatus(&res.Status)
4848
}
4949
return res.Customers, nil
5050
}
@@ -105,7 +105,7 @@ func (cli *Client) VerifyCustomerUser(ctx context.Context, username, password st
105105
return nil, erro.NewFromError("VerifyCustomerUser: unmarhsalling response failed", err)
106106
}
107107
if !common.IsJSONResponseOK(&res.Status) {
108-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
108+
return nil, erro.NewFromResponseStatus(&res.Status)
109109
}
110110
if len(res.Records) != 1 {
111111
return nil, erro.NewFromError("VerifyCustomerUser: no records in response", nil)

pkg/api/customers/supplierRequests.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func (cli *Client) GetSuppliers(ctx context.Context, filters map[string]string)
2121
return nil, erro.NewFromError("failed to unmarshal GetSuppliersResponse ", err)
2222
}
2323
if !common.IsJSONResponseOK(&res.Status) {
24-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
24+
return nil, erro.NewFromResponseStatus(&res.Status)
2525
}
2626
return res.Suppliers, nil
2727
}
@@ -73,7 +73,7 @@ func (cli *Client) SaveSupplier(ctx context.Context, filters map[string]string)
7373
}
7474

7575
if !common.IsJSONResponseOK(&res.Status) {
76-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
76+
return nil, erro.NewFromResponseStatus(&res.Status)
7777
}
7878

7979
if len(res.CustomerImportReports) == 0 {

pkg/api/documents/requests.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func (cli *Client) GetPurchaseDocuments(ctx context.Context, filters map[string]
2525
return nil, fmt.Errorf("ERPLY API: failed to unmarshal GetPurchaseDocumentsResponse from '%s': %v", string(body), err)
2626
}
2727
if !common.IsJSONResponseOK(&res.Status) {
28-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
28+
return nil, erro.NewFromResponseStatus(&res.Status)
2929
}
3030

3131
return res.PurchaseDocuments, nil

pkg/api/pos/requests.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func (cli *Client) GetPointsOfSale(ctx context.Context, filters map[string]strin
1818
return nil, erro.NewFromError("failed to unmarshal GetPointsOfSaleResponse", err)
1919
}
2020
if !common.IsJSONResponseOK(&res.Status) {
21-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
21+
return nil, erro.NewFromResponseStatus(&res.Status)
2222
}
2323
return res.PointsOfSale, nil
2424
}

pkg/api/prices/requests.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func (cli *Client) GetSupplierPriceLists(ctx context.Context, filters map[string
2626
return nil, fmt.Errorf("ERPLY API: failed to unmarshal GetPriceListsResponse from '%s': %v", string(body), err)
2727
}
2828
if !common.IsJSONResponseOK(&res.Status) {
29-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
29+
return nil, erro.NewFromResponseStatus(&res.Status)
3030
}
3131

3232
return res.PriceLists, nil
@@ -56,7 +56,7 @@ func (cli *Client) persistProductToSupplierPriceList(ctx context.Context, method
5656
}
5757

5858
if !common.IsJSONResponseOK(&res.Status) {
59-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
59+
return nil, erro.NewFromResponseStatus(&res.Status)
6060
}
6161

6262
if len(res.ChangeProductToSupplierPriceListResult) == 0 {
@@ -168,7 +168,7 @@ func (cli *Client) GetProductsInSupplierPriceList(ctx context.Context, filters m
168168
return nil, fmt.Errorf("ERPLY API: failed to unmarshal ProductsInSupplierPriceListResponse from '%s': %v", string(body), err)
169169
}
170170
if !common.IsJSONResponseOK(&res.Status) {
171-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
171+
return nil, erro.NewFromResponseStatus(&res.Status)
172172
}
173173

174174
return res.ProductsInSupplierPriceList, nil
@@ -225,7 +225,7 @@ func (cli *Client) GetProductsInPriceList(ctx context.Context, filters map[strin
225225
return nil, fmt.Errorf("ERPLY API: failed to unmarshal GetProductsInPriceListResponse from '%s': %v", string(body), err)
226226
}
227227
if !common.IsJSONResponseOK(&res.Status) {
228-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
228+
return nil, erro.NewFromResponseStatus(&res.Status)
229229
}
230230

231231
return res.PriceLists, nil
@@ -282,7 +282,7 @@ func (cli *Client) DeleteProductsFromSupplierPriceList(ctx context.Context, filt
282282
}
283283

284284
if !common.IsJSONResponseOK(&res.Status) {
285-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
285+
return nil, erro.NewFromResponseStatus(&res.Status)
286286
}
287287

288288
if len(res.DeleteProductsFromSupplierPriceListResult) == 0 {
@@ -353,7 +353,7 @@ func (cli *Client) SaveSupplierPriceList(ctx context.Context, filters map[string
353353
}
354354

355355
if !common.IsJSONResponseOK(&res.Status) {
356-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
356+
return nil, erro.NewFromResponseStatus(&res.Status)
357357
}
358358

359359
if len(res.SaveSupplierPriceListResult) == 0 {

pkg/api/products/requests.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func (cli *Client) GetProductUnits(ctx context.Context, filters map[string]strin
2222
}
2323

2424
if !common.IsJSONResponseOK(&res.Status) {
25-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
25+
return nil, erro.NewFromResponseStatus(&res.Status)
2626
}
2727

2828
return res.ProductUnits, nil
@@ -38,7 +38,7 @@ func (cli *Client) GetProducts(ctx context.Context, filters map[string]string) (
3838
return nil, erro.NewFromError("failed to unmarshal GetProductsResponse", err)
3939
}
4040
if !common.IsJSONResponseOK(&res.Status) {
41-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
41+
return nil, erro.NewFromResponseStatus(&res.Status)
4242
}
4343
return res.Products, nil
4444
}
@@ -89,7 +89,7 @@ func (cli *Client) GetProductCategories(ctx context.Context, filters map[string]
8989
return nil, erro.NewFromError("failed to unmarshal getProductCategoriesResponse", err)
9090
}
9191
if !common.IsJSONResponseOK(&res.Status) {
92-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
92+
return nil, erro.NewFromResponseStatus(&res.Status)
9393
}
9494
return res.ProductCategories, nil
9595
}
@@ -104,7 +104,7 @@ func (cli *Client) GetProductBrands(ctx context.Context, filters map[string]stri
104104
return nil, erro.NewFromError("failed to unmarshal getProductBrandsResponse", err)
105105
}
106106
if !common.IsJSONResponseOK(&res.Status) {
107-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
107+
return nil, erro.NewFromResponseStatus(&res.Status)
108108
}
109109
return res.ProductBrands, nil
110110
}
@@ -119,7 +119,7 @@ func (cli *Client) GetBrands(ctx context.Context, filters map[string]string) ([]
119119
return nil, erro.NewFromError("failed to unmarshal getBrandsResponse", err)
120120
}
121121
if !common.IsJSONResponseOK(&res.Status) {
122-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
122+
return nil, erro.NewFromResponseStatus(&res.Status)
123123
}
124124
return res.ProductBrands, nil
125125
}
@@ -134,7 +134,7 @@ func (cli *Client) GetProductGroups(ctx context.Context, filters map[string]stri
134134
return nil, erro.NewFromError("failed to unmarshal getProductGroupsResponse", err)
135135
}
136136
if !common.IsJSONResponseOK(&res.Status) {
137-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
137+
return nil, erro.NewFromResponseStatus(&res.Status)
138138
}
139139
return res.ProductGroups, nil
140140
}
@@ -149,7 +149,7 @@ func (cli *Client) GetProductStock(ctx context.Context, filters map[string]strin
149149
return nil, erro.NewFromError("failed to unmarshal GetProductStockResponse", err)
150150
}
151151
if !common.IsJSONResponseOK(&res.Status) {
152-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
152+
return nil, erro.NewFromResponseStatus(&res.Status)
153153
}
154154
return res.GetProductStock, nil
155155
}
@@ -165,7 +165,7 @@ func (cli *Client) GetProductStockFile(ctx context.Context, filters map[string]s
165165
return nil, erro.NewFromError("failed to unmarshal GetProductStockFileResponse", err)
166166
}
167167
if !common.IsJSONResponseOK(&res.Status) {
168-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
168+
return nil, erro.NewFromResponseStatus(&res.Status)
169169
}
170170
return res.GetProductStockFile, nil
171171
}

pkg/api/requests.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func (c *Client) GetCountries(ctx context.Context, filters map[string]string) ([
3333
return nil, erro.NewFromError("failed to unmarshal GetCountriesResponse", err)
3434
}
3535
if !common.IsJSONResponseOK((*common2.Status)(&res.Status)) {
36-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
36+
return nil, erro.NewFromResponseStatus(&res.Status)
3737
}
3838
return res.Countries, nil
3939
}
@@ -51,7 +51,7 @@ func (c *Client) GetUserRights(ctx context.Context, filters map[string]string) (
5151
}
5252

5353
if !common.IsJSONResponseOK(&res.Status) {
54-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
54+
return nil, erro.NewFromResponseStatus(&res.Status)
5555
}
5656

5757
if len(res.Records) == 0 {
@@ -72,7 +72,7 @@ func (c *Client) GetEmployees(ctx context.Context, filters map[string]string) ([
7272
return nil, erro.NewFromError("failed to unmarshal GetEmployeesResponse", err)
7373
}
7474
if !common.IsJSONResponseOK(&res.Status) {
75-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
75+
return nil, erro.NewFromResponseStatus(&res.Status)
7676
}
7777
return res.Employees, nil
7878
}
@@ -88,7 +88,7 @@ func (c *Client) GetBusinessAreas(ctx context.Context, filters map[string]string
8888
return nil, erro.NewFromError("failed to unmarshal GetBusinessAreasResponse", err)
8989
}
9090
if !common.IsJSONResponseOK(&res.Status) {
91-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
91+
return nil, erro.NewFromResponseStatus(&res.Status)
9292
}
9393
return res.BusinessAreas, nil
9494
}
@@ -104,7 +104,7 @@ func (c *Client) GetCurrencies(ctx context.Context, filters map[string]string) (
104104
return nil, erro.NewFromError("failed to unmarshal GetCurrenciesResponse", err)
105105
}
106106
if !common.IsJSONResponseOK(&res.Status) {
107-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
107+
return nil, erro.NewFromResponseStatus(&res.Status)
108108
}
109109
return res.Currencies, nil
110110
}
@@ -137,7 +137,7 @@ func (c *Client) SaveEvent(ctx context.Context, filters map[string]string) (int,
137137
return 0, erro.NewFromError(fmt.Sprintf("failed to unmarshal %s response", SaveEventMethod), err)
138138
}
139139
if !common.IsJSONResponseOK(&res.Status) {
140-
return 0, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
140+
return 0, erro.NewFromResponseStatus(&res.Status)
141141
}
142142
return res.Records[0].EventID, nil
143143
}

pkg/api/sales/documentRequests.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func (cli *Client) SaveSalesDocument(ctx context.Context, filters map[string]str
2020
}
2121

2222
if !common.IsJSONResponseOK(&res.Status) {
23-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
23+
return nil, erro.NewFromResponseStatus(&res.Status)
2424
}
2525

2626
if len(res.ImportReports) == 0 {
@@ -62,7 +62,7 @@ func (cli *Client) GetSalesDocuments(ctx context.Context, filters map[string]str
6262
}
6363

6464
if !common.IsJSONResponseOK(&res.Status) {
65-
return nil, erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
65+
return nil, erro.NewFromResponseStatus(&res.Status)
6666
}
6767

6868
if len(res.SalesDocuments) == 0 {
@@ -119,7 +119,7 @@ func (cli *Client) DeleteDocument(ctx context.Context, filters map[string]string
119119
}
120120

121121
if !common.IsJSONResponseOK(&res.Status) {
122-
return erro.NewErplyError(res.Status.ErrorCode.String(), res.Status.Request+": "+res.Status.ResponseStatus)
122+
return erro.NewFromResponseStatus(&res.Status)
123123
}
124124

125125
return nil

0 commit comments

Comments
 (0)