in funcframework/framework.go [235:260]
func wrapTypedFunction(fn interface{}) (http.Handler, error) {
inputType, err := validateTypedFunction(fn)
if err != nil {
return nil, err
}
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
body, err := readHTTPRequestBody(r)
if err != nil {
writeHTTPErrorResponse(w, http.StatusBadRequest, crashStatus, fmt.Sprintf("%v", err))
return
}
argVal := inputType
if err := json.Unmarshal(body, argVal.Interface()); err != nil {
writeHTTPErrorResponse(w, http.StatusBadRequest, crashStatus, fmt.Sprintf("Error while converting input data. %s", err.Error()))
return
}
defer recoverPanic(w, "user function execution", false)
funcReturn := reflect.ValueOf(fn).Call([]reflect.Value{
argVal.Elem(),
})
handleTypedReturn(w, funcReturn)
}), nil
}