59 lines
1.2 KiB
Go
59 lines
1.2 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
|
|
}
|
|
|
|
hostname := os.Getenv("BASE_URL")
|
|
if hostname == "" {
|
|
hostname = "localhost:8080"
|
|
}
|
|
|
|
event := AnalyticsEvent{
|
|
APIKey: apiKey,
|
|
SiteID: "fitra-backend",
|
|
Type: eventType,
|
|
Pathname: pathname,
|
|
Hostname: hostname,
|
|
PageTitle: pageTitle,
|
|
UserAgent: userAgent,
|
|
IPAddress: ipAddress,
|
|
}
|
|
|
|
jsonData, err := json.Marshal(event)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
req, err := http.NewRequest("POST", "https://a.adhd.sh/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
|
|
}
|