2023-12-16 02:25:49 +00:00
|
|
|
package transformers
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
|
|
"regexp"
|
|
|
|
"strings"
|
|
|
|
)
|
|
|
|
|
|
|
|
var ReplacePath = RequestTransformer{
|
2023-12-16 03:42:14 +00:00
|
|
|
ModifyRequest: func(options any, ctx *fiber.Ctx) error {
|
2023-12-16 02:25:49 +00:00
|
|
|
opts := DeserializeOptions[struct {
|
2023-12-16 14:57:32 +00:00
|
|
|
Pattern string `json:"pattern" yaml:"pattern"`
|
|
|
|
Value string `json:"value" yaml:"value"`
|
|
|
|
Repl string `json:"repl" yaml:"repl"` // Use when complex mode(regexp) enabled
|
|
|
|
Complex bool `json:"complex" yaml:"complex"`
|
2023-12-16 02:25:49 +00:00
|
|
|
}](options)
|
|
|
|
path := string(ctx.Request().URI().Path())
|
|
|
|
if !opts.Complex {
|
|
|
|
ctx.Path(strings.ReplaceAll(path, opts.Pattern, opts.Value))
|
|
|
|
} else if ex := regexp.MustCompile(opts.Pattern); ex != nil {
|
|
|
|
ctx.Path(ex.ReplaceAllString(path, opts.Repl))
|
|
|
|
}
|
2023-12-16 03:42:14 +00:00
|
|
|
return nil
|
2023-12-16 02:25:49 +00:00
|
|
|
},
|
|
|
|
}
|