From dfebde8c4e9ec4c6a9e694c89ac25ef46ab3fe96 Mon Sep 17 00:00:00 2001 From: "Gustavo \"Guz\" L de Mello" Date: Fri, 8 Aug 2025 19:17:57 -0300 Subject: [PATCH] feat(smalltrip,multiplexer): form method multiplexer --- multiplexer/request.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 multiplexer/request.go diff --git a/multiplexer/request.go b/multiplexer/request.go new file mode 100644 index 0000000..afa6b34 --- /dev/null +++ b/multiplexer/request.go @@ -0,0 +1,37 @@ +// Copyright 2025-present Gustavo "Guz" L. de Mello +// Copyright 2025-present The Lored.dev Contributors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +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) +}