1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00
wtf/modules/pagerduty/client.go
Chris Cummer e581646d31 Include the link in incidents, and set the colours according to user config
Signed-off-by: Chris Cummer <chriscummer@me.com>
2020-07-23 09:50:01 -07:00

72 lines
1.7 KiB
Go

package pagerduty
import (
"time"
"github.com/PagerDuty/go-pagerduty"
)
const (
queryTimeFmt = "2006-01-02T15:04:05Z07:00"
)
// GetOnCalls returns a list of people currently on call
func GetOnCalls(apiKey string, scheduleIDs []string) ([]pagerduty.OnCall, error) {
client := pagerduty.NewClient(apiKey)
var results []pagerduty.OnCall
var queryOpts pagerduty.ListOnCallOptions
queryOpts.ScheduleIDs = scheduleIDs
queryOpts.Since = time.Now().Format(queryTimeFmt)
queryOpts.Until = time.Now().Format(queryTimeFmt)
oncalls, err := client.ListOnCalls(queryOpts)
if err != nil {
return nil, err
}
results = append(results, oncalls.OnCalls...)
for oncalls.APIListObject.More {
queryOpts.APIListObject.Offset = oncalls.APIListObject.Offset
oncalls, err = client.ListOnCalls(queryOpts)
if err != nil {
return nil, err
}
results = append(results, oncalls.OnCalls...)
}
return results, nil
}
// GetIncidents returns a list of unresolved incidents
func GetIncidents(apiKey string, teamIDs []string, userIDs []string) ([]pagerduty.Incident, error) {
client := pagerduty.NewClient(apiKey)
var results []pagerduty.Incident
var queryOpts pagerduty.ListIncidentsOptions
queryOpts.DateRange = "all"
queryOpts.Statuses = []string{"triggered", "acknowledged"}
queryOpts.TeamIDs = teamIDs
queryOpts.UserIDs = userIDs
items, err := client.ListIncidents(queryOpts)
if err != nil {
return nil, err
}
results = append(results, items.Incidents...)
for items.APIListObject.More {
queryOpts.APIListObject.Offset = items.APIListObject.Offset
items, err = client.ListIncidents(queryOpts)
if err != nil {
return nil, err
}
results = append(results, items.Incidents...)
}
return results, nil
}