4
4
"bytes"
5
5
"context"
6
6
"encoding/json"
7
+ "errors"
7
8
"fmt"
8
9
"io"
9
10
"net/http"
@@ -37,6 +38,19 @@ type QuickwitMapping struct {
37
38
} `json:"index_config"`
38
39
}
39
40
41
+ type QuickwitCreationErrorPayload struct {
42
+ Message string `json:"message"`
43
+ StatusCode int `json:"status"`
44
+ }
45
+
46
+ func marshallErrorAsException (statusCode int , message string ) error {
47
+ var payload QuickwitCreationErrorPayload
48
+ payload .Message = message
49
+ payload .StatusCode = statusCode
50
+ json , _ := json .Marshal (payload )
51
+ return errors .New (string (json ))
52
+ }
53
+
40
54
func getTimestampFieldInfos (index string , qwUrl string , cli * http.Client ) (string , string , error ) {
41
55
mappingEndpointUrl := qwUrl + "/indexes/" + index
42
56
qwlog .Info ("Calling quickwit endpoint: " + mappingEndpointUrl )
@@ -48,26 +62,27 @@ func getTimestampFieldInfos(index string, qwUrl string, cli *http.Client) (strin
48
62
}
49
63
50
64
statusCode := r .StatusCode
65
+
51
66
if statusCode < 200 || statusCode >= 400 {
52
- errMsg := fmt .Sprintf ("Error when calling url = %s: statusCode = %d " , mappingEndpointUrl , statusCode )
67
+ errMsg := fmt .Sprintf ("Error when calling url = %s" , mappingEndpointUrl )
53
68
qwlog .Error (errMsg )
54
- return "" , "" , fmt . Errorf ( errMsg )
69
+ return "" , "" , marshallErrorAsException ( statusCode , errMsg )
55
70
}
56
71
57
72
defer r .Body .Close ()
58
73
body , err := io .ReadAll (r .Body )
59
74
if err != nil {
60
75
errMsg := fmt .Sprintf ("Error when calling url = %s: err = %s" , mappingEndpointUrl , err .Error ())
61
76
qwlog .Error (errMsg )
62
- return "" , "" , err
77
+ return "" , "" , marshallErrorAsException ( statusCode , errMsg )
63
78
}
64
79
65
80
var payload QuickwitMapping
66
81
err = json .Unmarshal (body , & payload )
67
82
if err != nil {
68
83
errMsg := fmt .Sprintf ("Unmarshalling body error: err = %s, body = %s" , err .Error (), (body ))
69
84
qwlog .Error (errMsg )
70
- return "" , "" , fmt . Errorf ( errMsg )
85
+ return "" , "" , marshallErrorAsException ( statusCode , errMsg )
71
86
}
72
87
73
88
timestampFieldName := payload .IndexConfig .DocMapping .TimestampField
@@ -82,7 +97,7 @@ func getTimestampFieldInfos(index string, qwUrl string, cli *http.Client) (strin
82
97
if timestampFieldFormat == "undef" {
83
98
errMsg := fmt .Sprintf ("No format found for field: %s" , string (timestampFieldName ))
84
99
qwlog .Error (errMsg )
85
- return timestampFieldName , "" , fmt . Errorf ( errMsg )
100
+ return timestampFieldName , "" , marshallErrorAsException ( statusCode , errMsg )
86
101
}
87
102
88
103
qwlog .Info (fmt .Sprintf ("Found timestampFieldName = %s, timestampFieldFormat = %s" , timestampFieldName , timestampFieldFormat ))
0 commit comments