Skip to content

Commit

Permalink
feat(main): 增加path匹配器
Browse files Browse the repository at this point in the history
  • Loading branch information
BadKid90s committed Apr 24, 2024
1 parent 07e70da commit 25806a6
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions knife/matcher/path.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// 关于路径的匹配器

package matcher

import (
"fmt"
"knife"
"log"
"regexp"
"strings"
)

// PathPrefix 路径前缀匹配
func PathPrefix(prefix string) knife.MiddlewareMatcher {
return func(response knife.HttpResponseWriter, request knife.HttpRequest) bool {
return strings.HasPrefix(request.URL.Path, prefix)
}
}

// PathMatch 路径正则匹配
func PathMatch(pattern string) knife.MiddlewareMatcher {
return func(response knife.HttpResponseWriter, request knife.HttpRequest) bool {
matched, err := isPathMatched(request.URL.Path, pattern)
if err != nil {
log.Println("path matched failed")
return false
}
return matched
}
}

// isPathMatched 路径匹配方式
// path 路径
// pattern 正则表达式
func isPathMatched(path string, pattern string) (bool, error) {
re, err := regexp.Compile(pattern)
if err != nil {
return false, fmt.Errorf("invalid regular expression: %w", err)
}
return re.MatchString(path), nil
}

0 comments on commit 25806a6

Please sign in to comment.