func()

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
}