55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package telemetry
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"net/http"
|
|
"runtime"
|
|
|
|
"github.com/cloudskiff/driftctl/pkg/analyser"
|
|
"github.com/cloudskiff/driftctl/pkg/version"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
type telemetry struct {
|
|
Version string `json:"version"`
|
|
Os string `json:"os"`
|
|
Arch string `json:"arch"`
|
|
TotalResources int `json:"total_resources"`
|
|
TotalManaged int `json:"total_managed"`
|
|
Duration uint `json:"duration"`
|
|
}
|
|
|
|
func SendTelemetry(analysis *analyser.Analysis) {
|
|
|
|
if analysis == nil {
|
|
return
|
|
}
|
|
|
|
t := telemetry{
|
|
Version: version.Current(),
|
|
Os: runtime.GOOS,
|
|
Arch: runtime.GOARCH,
|
|
TotalResources: analysis.Summary().TotalResources,
|
|
TotalManaged: analysis.Summary().TotalManaged,
|
|
Duration: uint(analysis.Duration.Seconds() + 0.5),
|
|
}
|
|
|
|
body, err := json.Marshal(t)
|
|
if err != nil {
|
|
logrus.Debug(err)
|
|
return
|
|
}
|
|
|
|
client := &http.Client{}
|
|
req, _ := http.NewRequest("POST", "https://2lvzgmrf2e.execute-api.eu-west-3.amazonaws.com/telemetry", bytes.NewReader(body))
|
|
req.Header.Set("Content-Type", "application/json")
|
|
|
|
_, err = client.Do(req)
|
|
if err != nil {
|
|
logrus.Debugf("Unable to send telemetry data: %+v", err)
|
|
return
|
|
}
|
|
|
|
}
|