Files
anubis-mirror/lib/policy/checker.go
Xe Iaso 590d8303ad refactor: use new checker types
Signed-off-by: Xe Iaso <me@xeiaso.net>
2025-07-25 19:39:14 +00:00

47 lines
895 B
Go

package policy
import (
"errors"
"fmt"
"sort"
"strings"
"github.com/TecharoHQ/anubis/lib/checker"
"github.com/TecharoHQ/anubis/lib/checker/headerexists"
"github.com/TecharoHQ/anubis/lib/checker/headermatches"
)
func NewHeadersChecker(headermap map[string]string) (checker.Interface, error) {
var result checker.All
var errs []error
var keys []string
for key := range headermap {
keys = append(keys, key)
}
sort.Strings(keys)
for _, key := range keys {
rexStr := headermap[key]
if rexStr == ".*" {
result = append(result, headerexists.New(strings.TrimSpace(key)))
continue
}
c, err := headermatches.New(key, rexStr)
if err != nil {
errs = append(errs, fmt.Errorf("while parsing header %s regex %s: %w", key, rexStr, err))
continue
}
result = append(result, c)
}
if len(errs) != 0 {
return nil, errors.Join(errs...)
}
return result, nil
}