1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00

Handle offline scenarios for OpsGenie

This commit is contained in:
Chris Cummer
2018-04-09 09:48:45 -07:00
committed by Chris Cummer
parent 204e3b4032
commit aa658db210
6 changed files with 46 additions and 32 deletions

View File

@@ -27,22 +27,21 @@ type Parent struct {
/* -------------------- Exported Functions -------------------- */
func Fetch() *OnCallResponse {
func Fetch() (*OnCallResponse, error) {
apiKey := os.Getenv("WTF_OPS_GENIE_API_KEY")
scheduleUrl := "https://api.opsgenie.com/v2/schedules/on-calls?flat=true"
var onCallResponse OnCallResponse
opsGenieRequest(scheduleUrl, apiKey, &onCallResponse)
response, err := opsGenieRequest(scheduleUrl, apiKey)
return &onCallResponse
return response, err
}
/* -------------------- Unexported Functions -------------------- */
func opsGenieRequest(url string, apiKey string, payload interface{}) {
func opsGenieRequest(url string, apiKey string) (*OnCallResponse, error) {
req, err := http.NewRequest("GET", url, nil)
if err != nil {
panic(err)
return nil, err
}
req.Header.Set("Authorization", fmt.Sprintf("GenieKey %s", apiKey))
@@ -51,11 +50,14 @@ func opsGenieRequest(url string, apiKey string, payload interface{}) {
resp, err := client.Do(req)
if err != nil {
panic(err)
return nil, err
}
defer resp.Body.Close()
if err := json.NewDecoder(resp.Body).Decode(payload); err != nil {
panic(err)
response := &OnCallResponse{}
if err := json.NewDecoder(resp.Body).Decode(response); err != nil {
return nil, err
}
return response, nil
}

View File

@@ -34,13 +34,20 @@ func (widget *Widget) Refresh() {
return
}
data := Fetch()
data, err := Fetch()
widget.View.SetTitle(" ⏰ On Call ")
widget.RefreshedAt = time.Now()
widget.View.Clear()
fmt.Fprintf(widget.View, "%s", widget.contentFrom(data))
if err != nil {
widget.View.SetWrap(true)
fmt.Fprintf(widget.View, "%s", err)
} else {
widget.View.SetWrap(false)
fmt.Fprintf(widget.View, "%s", widget.contentFrom(data))
}
}
/* -------------------- Unexported Functions -------------------- */