site/vendor/gopkg.in/segmentio/analytics-go.v3/traits.go

90 lines
2.0 KiB
Go

package analytics
import "time"
// This type is used to represent traits in messages that support it.
// It is a free-form object so the application can set any value it sees fit but
// a few helper method are defined to make it easier to instantiate traits with
// common fields.
// Here's a quick example of how this type is meant to be used:
//
// analytics.Identify{
// UserId: "0123456789",
// Traits: analytics.NewTraits()
// .SetFirstName("Luke")
// .SetLastName("Skywalker")
// .Set("Role", "Jedi"),
// }
//
// The specifications can be found at https://segment.com/docs/spec/identify/#traits
type Traits map[string]interface{}
func NewTraits() Traits {
return make(Traits, 10)
}
func (t Traits) SetAddress(address string) Traits {
return t.Set("address", address)
}
func (t Traits) SetAge(age int) Traits {
return t.Set("age", age)
}
func (t Traits) SetAvatar(url string) Traits {
return t.Set("avatar", url)
}
func (t Traits) SetBirthday(date time.Time) Traits {
return t.Set("birthday", date)
}
func (t Traits) SetCreatedAt(date time.Time) Traits {
return t.Set("createdAt", date)
}
func (t Traits) SetDescription(desc string) Traits {
return t.Set("description", desc)
}
func (t Traits) SetEmail(email string) Traits {
return t.Set("email", email)
}
func (t Traits) SetFirstName(firstName string) Traits {
return t.Set("firstName", firstName)
}
func (t Traits) SetGender(gender string) Traits {
return t.Set("gender", gender)
}
func (t Traits) SetLastName(lastName string) Traits {
return t.Set("lastName", lastName)
}
func (t Traits) SetName(name string) Traits {
return t.Set("name", name)
}
func (t Traits) SetPhone(phone string) Traits {
return t.Set("phone", phone)
}
func (t Traits) SetTitle(title string) Traits {
return t.Set("title", title)
}
func (t Traits) SetUsername(username string) Traits {
return t.Set("username", username)
}
func (t Traits) SetWebsite(url string) Traits {
return t.Set("website", url)
}
func (t Traits) Set(field string, value interface{}) Traits {
t[field] = value
return t
}