in funcframework/framework.go [318:336]
func handleEventFunction(w http.ResponseWriter, r *http.Request, fn interface{}) {
body, err := readHTTPRequestBody(r)
if err != nil {
writeHTTPErrorResponse(w, http.StatusBadRequest, crashStatus, fmt.Sprintf("%v", err))
return
}
// Background events have data and an associated metadata, so parse those and run if present.
if metadata, data, err := getBackgroundEvent(body, r.URL.Path); err != nil {
writeHTTPErrorResponse(w, http.StatusBadRequest, crashStatus, fmt.Sprintf("Error: %s, parsing background event: %s", err.Error(), string(body)))
return
} else if data != nil && metadata != nil {
runBackgroundEvent(w, r, metadata, data, fn)
return
}
// Otherwise, we assume the body is a JSON blob containing the user-specified data structure.
runUserFunction(w, r, body, fn)
}