in internal/task_request/task_request.go [115:166]
func (h *taskRequestTimer) SendRequest(ctx context.Context) ([]byte, error) {
fullURL, err := url.JoinPath(h.gitLabURL, apiBasePath, h.nodeUUID, "heartbeat")
response := []byte{}
if err != nil {
return response, err
}
payload, err := h.buildRequestPayload()
if err != nil {
return response, err
}
requestCtx, requestCancel := context.WithTimeout(ctx, requestTimeout)
defer requestCancel()
req, err := http.NewRequestWithContext(requestCtx, http.MethodPost, fullURL, bytes.NewReader(payload))
if err != nil {
return response, err
}
tokenString, authErr := h.authenticator()
if authErr != nil {
return response, authErr
}
req.Header = http.Header{
"Accept": {"application/json"},
apiSecretHeaderName: {tokenString},
}
if payload != nil {
req.Header.Set("Content-Type", "application/json")
}
client := http.Client{}
resp, err := client.Do(req) //nolint:bodyclose
if err != nil {
return response, err
}
body, err := io.ReadAll(resp.Body)
if err != nil {
return body, err
}
if resp.StatusCode != http.StatusOK {
return body, fmt.Errorf("TaskRequest responded with [%d]", resp.StatusCode)
}
slog.Debug("TaskRequest", "status", resp.StatusCode, "body", body)
slog.Info("TaskRequest", "status", resp.StatusCode)
return body, nil
}