// 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"), } }