in strategy/sampling/proxy.go [91:123]
func (c *xrayClient) getSamplingTargets(s []*SamplingStatisticsDocument) (*GetSamplingTargetsOutput, error) {
statistics := GetSamplingTargetsInput{
SamplingStatisticsDocuments: s,
}
statisticsByte, err := json.Marshal(statistics)
if err != nil {
return nil, err
}
body := bytes.NewReader(statisticsByte)
req, err := http.NewRequest(http.MethodPost, c.samplingTargetsURL, body)
if err != nil {
return nil, fmt.Errorf("xray client: failed to create http request: %w", err)
}
output, err := c.httpClient.Do(req)
if err != nil {
return nil, fmt.Errorf("xray client: unable to retrieve sampling targets, error on http request: %w", err)
}
defer output.Body.Close()
if output.StatusCode != http.StatusOK {
return nil, fmt.Errorf("xray client: unable to retrieve sampling targets, expected response status code 200, got: %d", output.StatusCode)
}
var samplingTargetsOutput *GetSamplingTargetsOutput
if err := json.NewDecoder(output.Body).Decode(&samplingTargetsOutput); err != nil {
return nil, fmt.Errorf("xray client: unable to retrieve sampling targets, unable to unmarshal the response body: %w", err)
}
return samplingTargetsOutput, nil
}