good morning!!!!

Skip to content
Snippets Groups Projects
Select Git revision
  • ce7f3697b0bd4a51a2a5502ad6e3f18bb6cf54b3
  • master default protected
  • fix-lint
  • cnpg
  • tomg_zalando_update
  • tomg_util-go-upgrade
  • tomg_tracing
  • tomg_traceconfig
  • tomg_critic
  • tomg_codegen
  • tomg_withContext
  • middleware
  • markiplier
  • runtime
  • gnet
  • interface
  • experimental-networking
  • v0.1.16
  • v0.1.15
  • v0.1.14
  • v0.1.13
  • v0.1.12
  • v0.1.11
  • v0.1.10
  • v0.1.9
  • v0.1.8
  • v0.1.7
  • v0.1.6
  • v0.1.5
  • v0.1.4
  • v0.1.3
  • v0.1.2
  • v0.1.0
  • v0.1.1
34 results

or.go

Blame
  • user avatar
    Garet Halliday authored
    ce7f3697
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    or.go 1.08 KiB
    package matchers
    
    import (
    	"encoding/json"
    	"fmt"
    
    	"github.com/caddyserver/caddy/v2"
    
    	"gfx.cafe/gfx/pggat/lib/fed"
    	"gfx.cafe/gfx/pggat/lib/gat"
    )
    
    func init() {
    	caddy.RegisterModule((*Or)(nil))
    }
    
    type Or struct {
    	Or []json.RawMessage `json:"or" caddy:"namespace=pggat.matchers inline_key=matcher"`
    
    	or []gat.Matcher
    }
    
    func (T *Or) CaddyModule() caddy.ModuleInfo {
    	return caddy.ModuleInfo{
    		ID: "pggat.matchers.or",
    		New: func() caddy.Module {
    			return new(Or)
    		},
    	}
    }
    
    func (T *Or) Provision(ctx caddy.Context) error {
    	T.or = make([]gat.Matcher, 0, len(T.Or))
    	if T.Or != nil {
    		raw, err := ctx.LoadModule(T, "Or")
    		if err != nil {
    			return fmt.Errorf("loading matcher module: %v", err)
    		}
    
    		val := raw.([]any)
    		T.or = make([]gat.Matcher, 0, len(val))
    		for _, vv := range val {
    			T.or = append(T.or, vv.(gat.Matcher))
    		}
    	}
    
    	return nil
    }
    
    func (T *Or) Matches(conn *fed.Conn) bool {
    	for _, matcher := range T.or {
    		if matcher.Matches(conn) {
    			return true
    		}
    	}
    	return false
    }
    
    var _ gat.Matcher = (*Or)(nil)
    var _ caddy.Module = (*Or)(nil)
    var _ caddy.Provisioner = (*Or)(nil)