Skip to content

Commit d33d97f

Browse files
authored
Merge pull request #21 from moia-oss/improve-error-handling
add more information to error messages
2 parents 0b20d55 + 6da7774 commit d33d97f

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

pkg/saved_objects/saved_objects.go

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,29 +44,34 @@ func NewSavedObjectsProvider(baseUrl string, client *http.Client, syncIndexPatte
4444
}
4545

4646
func (p *SavedObjectsProvider) GetObject(ctx context.Context, obj *SavedObjectOSD) (*SavedObjectTF, diag.Diagnostics) {
47+
url := fmt.Sprintf("/%s/%s", obj.Type, obj.ID)
4748
// build request
4849
req, err := http.NewRequestWithContext(
4950
ctx,
5051
http.MethodGet,
51-
p.URL(fmt.Sprintf("/%s/%s", obj.Type, obj.ID)),
52+
p.URL(url),
5253
nil,
5354
)
5455
req.Header.Set("osd-xsrf", "true")
5556
req.Header.Set("Content-Type", "application/json")
5657

5758
if err != nil {
58-
return nil, diag.FromErr(err)
59+
return nil, diag.FromErr(fmt.Errorf("could not build request to GET %v %w", url, err))
5960
}
6061

6162
res, err := p.httpClient.Do(req)
6263
if err != nil {
63-
return nil, diag.FromErr(fmt.Errorf("request failed, err %w ", err))
64+
return nil, diag.FromErr(fmt.Errorf("GET '%v' failed: %w", req.URL.String(), err))
6465
}
6566
if res.StatusCode == http.StatusNotFound {
6667
return nil, nil
6768
}
6869
if res.StatusCode != http.StatusOK {
69-
return nil, diag.FromErr(fmt.Errorf("request failed, statuscode %d", err))
70+
response, bodyReadErr := io.ReadAll(res.Body)
71+
if bodyReadErr != nil {
72+
return nil, diag.FromErr(fmt.Errorf("GET '%v' failed with status %d", req.URL.String(), res.StatusCode))
73+
}
74+
return nil, diag.FromErr(fmt.Errorf("GET '%v' failed with status %d\nresponse_body: %v", req.URL.String(), res.StatusCode, string(response)))
7075
}
7176
// parse result
7277
obj = &SavedObjectOSD{}
@@ -118,14 +123,14 @@ func (p *SavedObjectsProvider) SaveObject(ctx context.Context, obj *SavedObjectO
118123

119124
res, err := p.httpClient.Do(req)
120125
if err != nil {
121-
return diag.FromErr(fmt.Errorf("POST request failed, err %s, statuscode %d, url %s\nrequest_body: %s", err, res.StatusCode, req.URL.String(), string(jsonBytes)))
126+
return diag.FromErr(fmt.Errorf("POST '%s' failed, err %s, statuscode %d, \nrequest_body: %s", req.URL.String(), err, res.StatusCode, string(jsonBytes)))
122127
}
123128
if res.StatusCode != http.StatusOK {
124129
rawBody, bodyReadErr := io.ReadAll(res.Body)
125130
if bodyReadErr != nil {
126-
return diag.FromErr(fmt.Errorf("POST request failed, statuscode %d, url %s\nrequest_body: %s", err, req.URL.String(), string(jsonBytes)))
131+
return diag.FromErr(fmt.Errorf("POST '%s' failed with status %d\nrequest_body: %s", req.URL.String(), err, string(jsonBytes)))
127132
}
128-
return diag.FromErr(fmt.Errorf("POST request failed, statuscode %d, url %s\nrequest_body: %s\nresponse_body: %s", res.StatusCode, req.URL.String(), string(jsonBytes), string(rawBody)))
133+
return diag.FromErr(fmt.Errorf("POST '%s' failed with status %d\nrequest_body: %s\nresponse_body: %s", req.URL.String(), res.StatusCode, string(jsonBytes), string(rawBody)))
129134
}
130135
return nil
131136
}
@@ -145,8 +150,15 @@ func (p *SavedObjectsProvider) DeleteObject(ctx context.Context, obj *SavedObjec
145150
req.Header.Set("Content-Type", "application/json")
146151

147152
res, err := p.httpClient.Do(req)
148-
if err != nil || res.StatusCode != http.StatusOK {
149-
return diag.FromErr(fmt.Errorf("request failed, err %s, statuscode %d", err, res.StatusCode))
153+
if err != nil {
154+
return diag.FromErr(fmt.Errorf("DELETE '%s' failed, err %s, statuscode %d", req.URL.String(), err, res.StatusCode))
155+
}
156+
if res.StatusCode != http.StatusOK {
157+
response, bodyReadErr := io.ReadAll(res.Body)
158+
if bodyReadErr != nil {
159+
return diag.FromErr(fmt.Errorf("DELETE '%s' failed with status %d", req.URL.String(), err))
160+
}
161+
return diag.FromErr(fmt.Errorf("DELETE '%s' failed with status %d\nresponse_body: %s", req.URL.String(), res.StatusCode, string(response)))
150162
}
151163

152164
return nil

pkg/saved_objects/saved_objects_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ func TestIgnoreFieldsOnIndexPatternProperty(t *testing.T) {
112112
if tC.expectFields != hasFields {
113113
t.Errorf("Expected field presence: %v but actual field presence was %v", tC.expectFields, hasFields)
114114
}
115-
116115
})
117116
}
118117
}

0 commit comments

Comments
 (0)