diff --git a/smalltrip/multiplexer/request.go b/smalltrip/multiplexer/request.go new file mode 100644 index 0000000..6b287d9 --- /dev/null +++ b/smalltrip/multiplexer/request.go @@ -0,0 +1,22 @@ +package multiplexer + +import ( + "net/http" + "strings" +) + +func WithFormMethod(mux Multiplexer, key string) Multiplexer { + return &formMethodMux{key: key, Multiplexer: mux} +} + +type formMethodMux struct { + key string + Multiplexer +} + +func (mux *formMethodMux) ServeHTTP(w http.ResponseWriter, r *http.Request) { + if v := r.FormValue(mux.key); v != "" { + r.Method = strings.ToUpper(v) + } + mux.Multiplexer.ServeHTTP(w, r) +}