Files
fitra-backend/utils/analytics.go

53 lines
1.1 KiB
Go

package utils
import (
"bytes"
"encoding/json"
"net/http"
"os"
)
type AnalyticsEvent struct {
APIKey string `json:"api_key"`
SiteID string `json:"site_id"`
Type string `json:"type"`
Pathname string `json:"pathname"`
Hostname string `json:"hostname"`
PageTitle string `json:"page_title"`
UserAgent string `json:"user_agent"`
IPAddress string `json:"ip_address"`
}
func SendAnalyticsEvent(eventType, pathname, pageTitle, userAgent, ipAddress string) error {
apiKey := os.Getenv("ANALYTICS_KEY")
if apiKey == "" {
return nil // Skip if no API key configured
}
event := AnalyticsEvent{
APIKey: apiKey,
SiteID: "fitra-backend",
Type: eventType,
Pathname: pathname,
Hostname: "a.adhd.sh",
PageTitle: pageTitle,
UserAgent: userAgent,
IPAddress: ipAddress,
}
jsonData, err := json.Marshal(event)
if err != nil {
return err
}
req, err := http.NewRequest("POST", "https://app.rybbit.io/api/track", bytes.NewBuffer(jsonData))
if err != nil {
return err
}
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
_, err = client.Do(req)
return err
}