blob: e8164682e24a7a8c631c3750ae95c6816b7c3422 [file] [log] [blame]
package ignore
import "net/url"
func buildRuleMatcher(store IgnoreStore) (RuleMatcher, error) {
rulesList, err := store.List(false)
if err != nil {
return noopRuleMatcher, err
}
ignoreRules := make([]QueryRule, len(rulesList))
for idx, rawRule := range rulesList {
parsedQuery, err := url.ParseQuery(rawRule.Query)
if err != nil {
return noopRuleMatcher, err
}
ignoreRules[idx] = NewQueryRule(parsedQuery)
}
return func(params map[string]string) ([]*IgnoreRule, bool) {
result := []*IgnoreRule{}
for ruleIdx, rule := range ignoreRules {
if rule.IsMatch(params) {
result = append(result, rulesList[ruleIdx])
}
}
return result, len(result) > 0
}, nil
}