package http_middleware

import (
	"net/http"
	"strings"
)

// 请求前缀剪裁中间件(底层http.Handler接口织入,非Gin中间件)
type PrefixCut struct {
	Handler http.Handler
	HostPrefix string
}

func (cut *PrefixCut) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
	if len(strings.TrimSpace(cut.HostPrefix)) > 0 {
		hostPrefixPattern := getHostPrefixPattern(cut.HostPrefix)
		if hostPrefixPattern.MatchString(request.URL.Path) {
			request.URL.Path = hostPrefixPattern.ReplaceAllString(request.URL.Path, "")
			request.RequestURI = hostPrefixPattern.ReplaceAllString(request.RequestURI, "")
		}
	}
	cut.Handler.ServeHTTP(writer, request)
}