Explorar el Código

Moved analytics docs and fixed exported members of the module

jnfrati hace 4 años
padre
commit
8b72bb49d0

+ 0 - 0
internal/analytics/README.md → docs/developing/analytics.md


+ 8 - 6
internal/analytics/identifiers.go

@@ -7,31 +7,33 @@ import (
 	segment "gopkg.in/segmentio/analytics-go.v3"
 )
 
-type SegmentIdentifier interface {
+type segmentIdentifier interface {
 	getUserId() string
 	getTraits() segment.Traits
 }
 
-type SegmentIdentifyNewUser struct {
+type segmentIdentifyNewUser struct {
 	userId    string
 	userEmail string
 	isGithub  bool
 }
 
-func CreateSegmentIdentifyNewUser(user *models.User, registeredViaGithub bool) *SegmentIdentifyNewUser {
+// Creates a segment Identifier struct for new users. As we handle registration with github, it also accepts a param
+// to check if the new user has registered with github or not.
+func CreateSegmentIdentifyNewUser(user *models.User, registeredViaGithub bool) *segmentIdentifyNewUser {
 	userId := fmt.Sprintf("%v", user.ID)
-	return &SegmentIdentifyNewUser{
+	return &segmentIdentifyNewUser{
 		userId:    userId,
 		userEmail: user.Email,
 		isGithub:  registeredViaGithub,
 	}
 }
 
-func (i SegmentIdentifyNewUser) getUserId() string {
+func (i segmentIdentifyNewUser) getUserId() string {
 	return i.userId
 }
 
-func (i SegmentIdentifyNewUser) getTraits() segment.Traits {
+func (i segmentIdentifyNewUser) getTraits() segment.Traits {
 	var githubTrait string
 
 	if i.isGithub {

+ 11 - 17
internal/analytics/segment.go

@@ -6,8 +6,8 @@ import (
 )
 
 type AnalyticsSegmentClient interface {
-	Identify(SegmentIdentifier) error
-	Track(SegmentTrack) error
+	Identify(segmentIdentifier) error
+	Track(segmentTrack) error
 }
 
 type AnalyticsSegment struct {
@@ -16,11 +16,8 @@ type AnalyticsSegment struct {
 	logger    *logger.Logger
 }
 
-//
-/*
-	Initialize the segment client and return a superset of it, the AnalyticsSegmentClient will handle cases when
-	the segment client failed on initialization or not enabled
-*/
+// Initialize the segment client and return a superset of it, the AnalyticsSegmentClient will handle cases when
+// the segment client failed on initialization or not enabled
 func InitializeAnalyticsSegmentClient(segmentClientKey string, logger *logger.Logger) AnalyticsSegmentClient {
 	if segmentClientKey != "" {
 
@@ -46,11 +43,10 @@ func InitializeAnalyticsSegmentClient(segmentClientKey string, logger *logger.Lo
 	}
 }
 
-/*
-	Superset of segment client identify function, this will accept analytics defined identifiers only
-	and will log an error if the client is not initialized
-*/
-func (c *AnalyticsSegment) Identify(identifier SegmentIdentifier) error {
+//	Superset of segment client identify function, this will accept analytics defined identifiers only
+//	and will log an error if the client is not initialized
+
+func (c *AnalyticsSegment) Identify(identifier segmentIdentifier) error {
 	if !c.isEnabled {
 		c.logger.Error().Msg("Analytics not enabled")
 		return nil
@@ -63,11 +59,9 @@ func (c *AnalyticsSegment) Identify(identifier SegmentIdentifier) error {
 	return err
 }
 
-/*
-	Superset of segment client track function, this will accept analytics defined tracks only
-	and will log an error if the client is not initialized
-*/
-func (c *AnalyticsSegment) Track(track SegmentTrack) error {
+//	Superset of segment client track function, this will accept analytics defined tracks only
+//	and will log an error if the client is not initialized
+func (c *AnalyticsSegment) Track(track segmentTrack) error {
 	if !c.isEnabled {
 		c.logger.Error().Msg("Analytics not enabled")
 		return nil

+ 18 - 14
internal/analytics/tracks.go

@@ -7,58 +7,62 @@ import (
 	segment "gopkg.in/segmentio/analytics-go.v3"
 )
 
-type SegmentTrack interface {
+type segmentTrack interface {
 	getUserId() string
 	getEvent() SegmentEvent
 	getProperties() segment.Properties
 }
 
-type SegmentNewUserTrack struct {
+type segmentNewUserTrack struct {
 	userId    string
 	userEmail string
 }
 
-func CreateSegmentNewUserTrack(user *models.User) *SegmentNewUserTrack {
+// Constructor for track of type "New User"
+// Tracks when a user has registered
+func CreateSegmentNewUserTrack(user *models.User) *segmentNewUserTrack {
 	userId := fmt.Sprintf("%v", user.ID)
 
-	return &SegmentNewUserTrack{
+	return &segmentNewUserTrack{
 		userId:    userId,
 		userEmail: user.Email,
 	}
 }
 
-func (t *SegmentNewUserTrack) getUserId() string {
+func (t *segmentNewUserTrack) getUserId() string {
 	return t.userId
 }
 
-func (t *SegmentNewUserTrack) getEvent() SegmentEvent {
+func (t *segmentNewUserTrack) getEvent() SegmentEvent {
 	return NewUser
 }
 
-func (t *SegmentNewUserTrack) getProperties() segment.Properties {
+func (t *segmentNewUserTrack) getProperties() segment.Properties {
 	return segment.NewProperties().Set("email", t.userEmail)
 }
 
-type SegmentRedeployViaWebhookTrack struct {
+type segmentRedeployViaWebhookTrack struct {
 	userId     string
-	repository interface{}
+	repository string
 }
 
-func CreateSegmentRedeployViaWebhookTrack(userId string, repository interface{}) *SegmentRedeployViaWebhookTrack {
-	return &SegmentRedeployViaWebhookTrack{
+// Constructor for track of type "Triggered Re-deploy via Webhook"
+// 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 {
+func (t *segmentRedeployViaWebhookTrack) getUserId() string {
 	return t.userId
 }
 
-func (t *SegmentRedeployViaWebhookTrack) getEvent() SegmentEvent {
+func (t *segmentRedeployViaWebhookTrack) getEvent() SegmentEvent {
 	return RedeployViaWebhook
 }
 
-func (t *SegmentRedeployViaWebhookTrack) getProperties() segment.Properties {
+func (t *segmentRedeployViaWebhookTrack) getProperties() segment.Properties {
 	return segment.NewProperties().Set("repository", t.repository)
 }

+ 1 - 1
server/api/release_handler.go

@@ -1087,7 +1087,7 @@ func (app *App) HandleReleaseDeployWebhook(w http.ResponseWriter, r *http.Reques
 		return
 	}
 
-	app.analyticsClient.Track(analytics.CreateSegmentRedeployViaWebhookTrack("anonymous", repository))
+	app.analyticsClient.Track(analytics.CreateSegmentRedeployViaWebhookTrack("anonymous", repository.(string)))
 
 	w.WriteHeader(http.StatusOK)
 }