2
0

identifiers.go 931 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. // CreateSegmentIdentifyUser creates an identifier for users
  17. func CreateSegmentIdentifyUser(user *models.User) *segmentIdentifyNewUser {
  18. userId := fmt.Sprintf("%v", user.ID)
  19. return &segmentIdentifyNewUser{
  20. userId: userId,
  21. userEmail: user.Email,
  22. isGithub: user.GithubUserID != 0,
  23. }
  24. }
  25. func (i segmentIdentifyNewUser) getUserId() string {
  26. return i.userId
  27. }
  28. func (i segmentIdentifyNewUser) getTraits() segment.Traits {
  29. var githubTrait string
  30. if i.isGithub {
  31. githubTrait = "true"
  32. } else {
  33. githubTrait = "false"
  34. }
  35. return segment.NewTraits().
  36. SetEmail(i.userEmail).
  37. Set("github", githubTrait)
  38. }