| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package sessions
- import (
- "runtime"
- "time"
- "github.com/bugsnag/bugsnag-go/device"
- )
- // notifierPayload defines the .notifier subobject of the payload
- type notifierPayload struct {
- Name string `json:"name"`
- URL string `json:"url"`
- Version string `json:"version"`
- }
- // appPayload defines the .app subobject of the payload
- type appPayload struct {
- Type string `json:"type,omitempty"`
- ReleaseStage string `json:"releaseStage,omitempty"`
- Version string `json:"version,omitempty"`
- }
- // devicePayload defines the .device subobject of the payload
- type devicePayload struct {
- OsName string `json:"osName,omitempty"`
- Hostname string `json:"hostname,omitempty"`
- }
- // sessionCountsPayload defines the .sessionCounts subobject of the payload
- type sessionCountsPayload struct {
- StartedAt string `json:"startedAt"`
- SessionsStarted int `json:"sessionsStarted"`
- }
- // sessionPayload defines the top level payload object
- type sessionPayload struct {
- Notifier *notifierPayload `json:"notifier"`
- App *appPayload `json:"app"`
- Device *devicePayload `json:"device"`
- SessionCounts []sessionCountsPayload `json:"sessionCounts"`
- }
- // makeSessionPayload creates a sessionPayload based off of the given sessions and config
- func makeSessionPayload(sessions []*Session, config *SessionTrackingConfiguration) *sessionPayload {
- releaseStage := config.ReleaseStage
- if releaseStage == "" {
- releaseStage = "production"
- }
- hostname := config.Hostname
- if hostname == "" {
- hostname = device.GetHostname()
- }
- return &sessionPayload{
- Notifier: ¬ifierPayload{
- Name: "Bugsnag Go",
- URL: "https://github.com/bugsnag/bugsnag-go",
- Version: config.Version,
- },
- App: &appPayload{
- Type: config.AppType,
- Version: config.AppVersion,
- ReleaseStage: releaseStage,
- },
- Device: &devicePayload{
- OsName: runtime.GOOS,
- Hostname: hostname,
- },
- SessionCounts: []sessionCountsPayload{
- {
- //This timestamp assumes that we're sending these off once a minute
- StartedAt: sessions[0].StartedAt.UTC().Format(time.RFC3339),
- SessionsStarted: len(sessions),
- },
- },
- }
- }
|