func handleLogEventsRequest()

in logsapi/route_handlers.go [28:52]


func handleLogEventsRequest(logger *zap.SugaredLogger, logsChannel chan LogEvent) func(w http.ResponseWriter, r *http.Request) {
	return func(w http.ResponseWriter, r *http.Request) {
		var logEvents []LogEvent
		if err := json.NewDecoder(r.Body).Decode(&logEvents); err != nil {
			logger.Errorf("Error unmarshalling log events: %+v", err)
			w.WriteHeader(http.StatusInternalServerError)
			return
		}

		for idx := range logEvents {
			if logEvents[idx].Type == "" {
				logger.Errorf("Error reading log event: %+v", logEvents[idx])
				w.WriteHeader(http.StatusInternalServerError)
				continue
			}
			select {
			case logsChannel <- logEvents[idx]:
			case <-r.Context().Done():
				logger.Warnf("Failed to enqueue event, signaling lambda to retry")
				w.WriteHeader(http.StatusInternalServerError)
				return
			}
		}
	}
}