From 361770b898085f45f72fac00ff4d259a943b2a74 Mon Sep 17 00:00:00 2001 From: Nicolas Carlier Date: Sat, 10 Aug 2024 07:44:37 +0000 Subject: [PATCH] fix: multipart/form-data support close #100 --- pkg/api/index.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pkg/api/index.go b/pkg/api/index.go index 48bfe84..6704031 100644 --- a/pkg/api/index.go +++ b/pkg/api/index.go @@ -107,7 +107,8 @@ func triggerWebhook(w http.ResponseWriter, r *http.Request) { ct := r.Header.Get("Content-Type") if ct != "" { mediatype, _, _ := mime.ParseMediaType(ct) - if strings.HasPrefix(mediatype, "text/") || mediatype == "application/json" { + switch { + case mediatype == "application/json", strings.HasPrefix(mediatype, "text/"): body, err = io.ReadAll(r.Body) if err != nil { msg := "unable to read request body" @@ -115,6 +116,15 @@ func triggerWebhook(w http.ResponseWriter, r *http.Request) { http.Error(w, msg, http.StatusBadRequest) return } + case mediatype == "multipart/form-data": + if err := r.ParseMultipartForm(8 << 20); err != nil { + msg := "unable to parse multipart/form-data" + slog.Error(msg, "err", err) + http.Error(w, msg, http.StatusBadRequest) + return + } + default: + slog.Debug("unsuported media type", "media_type", mediatype) } }