in pkg/confidence/http_resolve_client.go [28:61]
func (client HttpResolveClient) SendResolveRequest(ctx context.Context,
request ResolveRequest) (ResolveResponse, error) {
jsonRequest, err := json.Marshal(request)
if err != nil {
return ResolveResponse{}, fmt.Errorf("error when serializing request to the resolver service: %w", err)
}
payload := bytes.NewBuffer(jsonRequest)
req, err := http.NewRequestWithContext(ctx,
http.MethodPost, fmt.Sprintf("%s/v1/flags:resolve", client.Config.APIResolveBaseUrl), payload)
if err != nil {
return ResolveResponse{}, err
}
resp, err := client.Client.Do(req)
if err != nil {
return ResolveResponse{}, fmt.Errorf("error when calling the resolver service: %w", err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return ResolveResponse{},
fmt.Errorf("got '%s' error from the resolver service: %s", resp.Status, parseErrorMessage(resp.Body))
}
var result ResolveResponse
decoder := json.NewDecoder(resp.Body)
decoder.UseNumber()
err = decoder.Decode(&result)
if err != nil {
return ResolveResponse{}, fmt.Errorf("error when deserializing response from the resolver service: %w", err)
}
return result, nil
}