frostfs-s3-gw/api/auth/regexp_utils.go

27 lines
611 B
Go

package auth
import "regexp"
type RegexpSubmatcher struct {
re *regexp.Regexp
}
// NewRegexpMatcher creates a new regexp sub matcher.
func NewRegexpMatcher(re *regexp.Regexp) *RegexpSubmatcher {
return &RegexpSubmatcher{re: re}
}
// GetSubmatches returns matches from provided string. Zero length indicates no match.
func (r *RegexpSubmatcher) GetSubmatches(target string) map[string]string {
matches := r.re.FindStringSubmatch(target)
l := len(matches)
sub := make(map[string]string, l)
for i, name := range r.re.SubexpNames() {
if i > 0 && i <= l {
sub[name] = matches[i]
}
}
return sub
}