mixpanel.go 817 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package main
  2. import (
  3. "http"
  4. "encoding/base64"
  5. "json"
  6. "log"
  7. )
  8. func init() {
  9. log.SetFlags(log.Ltime | log.Lshortfile)
  10. }
  11. func track(event, ip, id, song, user string) {
  12. const token = "643bb718adc5d66de18617b4f0bf3489"
  13. data := make(map[string]interface{})
  14. data["event"] = event
  15. properties := make(map[string]string)
  16. properties["token"] = token
  17. properties["ip"] = ip
  18. properties["id"] = id
  19. if song != "" {
  20. properties["song"] = song
  21. }
  22. if user != "" {
  23. properties["user"] = user
  24. }
  25. data["properties"] = properties
  26. dataJSON, err := json.Marshal(data)
  27. if err != nil {
  28. log.Println(err)
  29. return
  30. }
  31. values := make(http.Values)
  32. values.Add("data", base64.StdEncoding.EncodeToString(dataJSON))
  33. r, err := http.PostForm("https://api.mixpanel.com/track/", values)
  34. if err == nil {
  35. r.Body.Close()
  36. }
  37. }