in statefun-sdk-go/v3/pkg/statefun/handler.go [127:158]
func (h *handler) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
if request.Method != "POST" {
http.Error(writer, "invalid request method", http.StatusMethodNotAllowed)
return
}
contentType := request.Header.Get("Content-type")
if contentType != "" && contentType != "application/octet-stream" {
http.Error(writer, "invalid content type", http.StatusUnsupportedMediaType)
return
}
if request.Body == nil || request.ContentLength == 0 {
http.Error(writer, "empty request body", http.StatusBadRequest)
return
}
buffer := bytes.Buffer{}
if _, err := buffer.ReadFrom(request.Body); err != nil {
http.Error(writer, err.Error(), http.StatusBadRequest)
return
}
response, err := h.Invoke(request.Context(), buffer.Bytes())
if err != nil {
log.Println(err.Error())
http.Error(writer, err.Error(), http.StatusInternalServerError)
return
}
_, _ = writer.Write(response)
}