| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package analytics
- import (
- "fmt"
- "github.com/porter-dev/porter/internal/models"
- segment "gopkg.in/segmentio/analytics-go.v3"
- )
- type segmentTrack interface {
- getUserId() string
- getEvent() SegmentEvent
- getProperties() segment.Properties
- }
- type segmentNewUserTrack struct {
- userId string
- userEmail string
- }
- // CreateSegmentNewUserTrack creates a track of type "New User", which
- // tracks when a user has registered
- func CreateSegmentNewUserTrack(user *models.User) *segmentNewUserTrack {
- userId := fmt.Sprintf("%v", user.ID)
- return &segmentNewUserTrack{
- userId: userId,
- userEmail: user.Email,
- }
- }
- func (t *segmentNewUserTrack) getUserId() string {
- return t.userId
- }
- func (t *segmentNewUserTrack) getEvent() SegmentEvent {
- return NewUser
- }
- func (t *segmentNewUserTrack) getProperties() segment.Properties {
- return segment.NewProperties().Set("email", t.userEmail)
- }
- type segmentRedeployViaWebhookTrack struct {
- userId string
- repository string
- }
- // CreateSegmentRedeployViaWebhookTrack creates a track of type "Triggered Re-deploy via Webhook", which
- // tracks whenever a repository is redeployed via webhook call
- func CreateSegmentRedeployViaWebhookTrack(userId string, repository string) *segmentRedeployViaWebhookTrack {
- return &segmentRedeployViaWebhookTrack{
- userId: userId,
- repository: repository,
- }
- }
- func (t *segmentRedeployViaWebhookTrack) getUserId() string {
- return t.userId
- }
- func (t *segmentRedeployViaWebhookTrack) getEvent() SegmentEvent {
- return RedeployViaWebhook
- }
- func (t *segmentRedeployViaWebhookTrack) getProperties() segment.Properties {
- return segment.NewProperties().Set("repository", t.repository)
- }
- type segmentNewClusterEventTrack struct {
- userId string
- projId string
- clusterName string
- clusterType string // EKS, DOKS, or GKE
- eventType string // connected, provisioned, or destroyed
- }
- // NewClusterEventOpts are the parameters for creating a "New Cluster Event" track
- type NewClusterEventOpts struct {
- UserId string
- ProjId string
- ClusterName string
- ClusterType string // EKS, DOKS, or GKE
- EventType string // connected, provisioned, or destroyed
- }
- // CreateSegmentNewClusterEvent creates a track of type "New Cluster Event", which
- // tracks whenever a cluster is newly provisioned, connected, or destroyed.
- func CreateSegmentNewClusterEvent(opts *NewClusterEventOpts) *segmentNewClusterEventTrack {
- return &segmentNewClusterEventTrack{
- userId: opts.UserId,
- projId: opts.ProjId,
- clusterName: opts.ClusterName,
- clusterType: opts.ClusterType,
- eventType: opts.EventType,
- }
- }
- func (t *segmentNewClusterEventTrack) getUserId() string {
- return t.userId
- }
- func (t *segmentNewClusterEventTrack) getEvent() SegmentEvent {
- return NewClusterEvent
- }
- func (t *segmentNewClusterEventTrack) getProperties() segment.Properties {
- return segment.NewProperties().Set("Project ID", t.projId).Set("Cluster Name", t.clusterName).Set("Cluster Type", t.clusterType).Set("Event Type", t.eventType)
- }
|