From 3fdc18ae6b48c56f872320bdd542dd52d64ec251 Mon Sep 17 00:00:00 2001
From: a <a@tuxpa.in>
Date: Thu, 13 Jul 2023 20:42:28 -0500
Subject: [PATCH] replacer

---
 contrib/middleware/replacer.go | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
 create mode 100644 contrib/middleware/replacer.go

diff --git a/contrib/middleware/replacer.go b/contrib/middleware/replacer.go
new file mode 100644
index 0000000..e77065b
--- /dev/null
+++ b/contrib/middleware/replacer.go
@@ -0,0 +1,19 @@
+package middleware
+
+import (
+	"strings"
+
+	"gfx.cafe/open/jrpc/pkg/codec"
+)
+
+var LegacyUnderscoreReplacer = MethodReplacer(strings.NewReplacer("_", "/"))
+
+// MethodReplacer will use the replacer on every method before handling
+func MethodReplacer(replacer *strings.Replacer) codec.Middleware {
+	return func(next codec.Handler) codec.Handler {
+		return codec.HandlerFunc(func(w codec.ResponseWriter, r *codec.Request) {
+			r.Method = replacer.Replace(r.Method)
+			next.ServeRPC(w, r)
+		})
+	}
+}
-- 
GitLab