github.com/kubeshop/testkube@v1.17.23/pkg/telemetry/sender_tka.go (about)

     1  package telemetry
     2  
     3  import (
     4  	"bytes"
     5  	"encoding/json"
     6  	"fmt"
     7  	"io"
     8  	"net/http"
     9  )
    10  
    11  const (
    12  	testkubeTelemetryUrl = "https://analytics.testkube.io"
    13  )
    14  
    15  func TestkubeAnalyticsSender(client *http.Client, payload Payload) (out string, err error) {
    16  
    17  	jsonData, err := json.Marshal(payload)
    18  	if err != nil {
    19  		return out, err
    20  	}
    21  
    22  	request, err := http.NewRequest("POST", testkubeTelemetryUrl, bytes.NewBuffer(jsonData))
    23  	if err != nil {
    24  		return out, err
    25  	}
    26  
    27  	request.Header.Set("Content-Type", "application/json")
    28  	resp, err := client.Do(request)
    29  	if err != nil {
    30  		return out, err
    31  	}
    32  	defer resp.Body.Close()
    33  	b, err := io.ReadAll(resp.Body)
    34  
    35  	if resp.StatusCode > 300 {
    36  		return out, fmt.Errorf("could not POST, statusCode: %d", resp.StatusCode)
    37  	}
    38  	return fmt.Sprintf("status: %d - %s", resp.StatusCode, b), err
    39  
    40  }