44 "bytes"
55 "context"
66 "encoding/json"
7+ "errors"
78 "fmt"
89 "io"
910 "net/http"
@@ -37,6 +38,19 @@ type QuickwitMapping struct {
3738 } `json:"index_config"`
3839}
3940
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+
4054func getTimestampFieldInfos (index string , qwUrl string , cli * http.Client ) (string , string , error ) {
4155 mappingEndpointUrl := qwUrl + "/indexes/" + index
4256 qwlog .Info ("Calling quickwit endpoint: " + mappingEndpointUrl )
@@ -48,26 +62,27 @@ func getTimestampFieldInfos(index string, qwUrl string, cli *http.Client) (strin
4862 }
4963
5064 statusCode := r .StatusCode
65+
5166 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 )
5368 qwlog .Error (errMsg )
54- return "" , "" , fmt . Errorf ( errMsg )
69+ return "" , "" , marshallErrorAsException ( statusCode , errMsg )
5570 }
5671
5772 defer r .Body .Close ()
5873 body , err := io .ReadAll (r .Body )
5974 if err != nil {
6075 errMsg := fmt .Sprintf ("Error when calling url = %s: err = %s" , mappingEndpointUrl , err .Error ())
6176 qwlog .Error (errMsg )
62- return "" , "" , err
77+ return "" , "" , marshallErrorAsException ( statusCode , errMsg )
6378 }
6479
6580 var payload QuickwitMapping
6681 err = json .Unmarshal (body , & payload )
6782 if err != nil {
6883 errMsg := fmt .Sprintf ("Unmarshalling body error: err = %s, body = %s" , err .Error (), (body ))
6984 qwlog .Error (errMsg )
70- return "" , "" , fmt . Errorf ( errMsg )
85+ return "" , "" , marshallErrorAsException ( statusCode , errMsg )
7186 }
7287
7388 timestampFieldName := payload .IndexConfig .DocMapping .TimestampField
@@ -82,7 +97,7 @@ func getTimestampFieldInfos(index string, qwUrl string, cli *http.Client) (strin
8297 if timestampFieldFormat == "undef" {
8398 errMsg := fmt .Sprintf ("No format found for field: %s" , string (timestampFieldName ))
8499 qwlog .Error (errMsg )
85- return timestampFieldName , "" , fmt . Errorf ( errMsg )
100+ return timestampFieldName , "" , marshallErrorAsException ( statusCode , errMsg )
86101 }
87102
88103 qwlog .Info (fmt .Sprintf ("Found timestampFieldName = %s, timestampFieldFormat = %s" , timestampFieldName , timestampFieldFormat ))
0 commit comments