// Broker provides the intelligence of how to mark and direct all events
func (c *EventsController) Broker(w http.ResponseWriter, r *http.Request) error {
var err error
c.Accept = r.Header.Get("Accept")
c.ContentType = "application/json"
dbEvent, err := c.Env.Jack.ByExtKeyAndOpen(c.Event.ExtKey)
c.Event.ID = dbEvent.ID
if err != nil {
c.Event.ID = 0
}
switch {
case c.Event.ID == 0 && c.Event.Severity != models.NORMAL:
return c.create(w, r)
case c.Event.ID == 0 && c.Event.Severity == models.NORMAL:
return c.flapping(w, r)
case c.Event.ID > 0 && c.Event.Severity != models.NORMAL:
return c.update(w, r)
case c.Event.ID > 0 && c.Event.Severity == models.NORMAL:
return c.closeAction(w, r)
}
return handler.StatusError{
Code: http.StatusInternalServerError,
Err: errors.New("unable to determine event status"),
}
}
Comments