identifiers.go 1.0 KB

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. // Creates a segment Identifier struct for new users. As we handle registration with github, it also accepts a param
  17. // to check if the new user has registered with github or not.
  18. func CreateSegmentIdentifyNewUser(user *models.User, registeredViaGithub bool) *segmentIdentifyNewUser {
  19. userId := fmt.Sprintf("%v", user.ID)
  20. return &segmentIdentifyNewUser{
  21. userId: userId,
  22. userEmail: user.Email,
  23. isGithub: registeredViaGithub,
  24. }
  25. }
  26. func (i segmentIdentifyNewUser) getUserId() string {
  27. return i.userId
  28. }
  29. func (i segmentIdentifyNewUser) getTraits() segment.Traits {
  30. var githubTrait string
  31. if i.isGithub {
  32. githubTrait = "true"
  33. } else {
  34. githubTrait = "false"
  35. }
  36. return segment.NewTraits().
  37. SetEmail(i.userEmail).
  38. Set("github", githubTrait)
  39. }