identifiers.go 895 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package analytics
  2. import (
  3. "fmt"
  4. "github.com/porter-dev/porter/internal/models"
  5. segment "gopkg.in/segmentio/analytics-go.v3"
  6. )
  7. type SegmentIdentifier interface {
  8. getUserId() string
  9. getTraits() segment.Traits
  10. }
  11. type SegmentIdentifyNewUser struct {
  12. userId string
  13. userEmail string
  14. isGithub bool
  15. }
  16. func CreateSegmentIdentifyNewUser(user *models.User, registeredViaGithub bool) *SegmentIdentifyNewUser {
  17. userId := fmt.Sprintf("%v", user.ID)
  18. return &SegmentIdentifyNewUser{
  19. userId: userId,
  20. userEmail: user.Email,
  21. isGithub: registeredViaGithub,
  22. }
  23. }
  24. func (i SegmentIdentifyNewUser) getUserId() string {
  25. return i.userId
  26. }
  27. func (i SegmentIdentifyNewUser) getTraits() segment.Traits {
  28. var githubTrait string
  29. if i.isGithub {
  30. githubTrait = "true"
  31. } else {
  32. githubTrait = "false"
  33. }
  34. return segment.NewTraits().
  35. SetEmail(i.userEmail).
  36. Set("github", githubTrait)
  37. }