khatru: router AnyEvent() and AnyReq().

This commit is contained in:
fiatjaf
2025-10-28 11:10:45 -03:00
parent a0a66cb719
commit 309bab0048

View File

@@ -23,7 +23,7 @@ func NewRouter() *Router {
rr.routes = make([]Route, 0, 3) rr.routes = make([]Route, 0, 3)
rr.getSubRelayFromFilter = func(f nostr.Filter) *Relay { rr.getSubRelayFromFilter = func(f nostr.Filter) *Relay {
for _, route := range rr.routes { for _, route := range rr.routes {
if route.filterMatcher(f) { if route.filterMatcher == nil || route.filterMatcher(f) {
return route.relay return route.relay
} }
} }
@@ -31,7 +31,7 @@ func NewRouter() *Router {
} }
rr.getSubRelayFromEvent = func(e *nostr.Event) *Relay { rr.getSubRelayFromEvent = func(e *nostr.Event) *Relay {
for _, route := range rr.routes { for _, route := range rr.routes {
if route.eventMatcher(e) { if route.eventMatcher == nil || route.eventMatcher(e) {
return route.relay return route.relay
} }
} }
@@ -53,11 +53,21 @@ func (rb routeBuilder) Req(fn func(nostr.Filter) bool) routeBuilder {
return rb return rb
} }
func (rb routeBuilder) AnyReq() routeBuilder {
rb.filterMatcher = nil
return rb
}
func (rb routeBuilder) Event(fn func(*nostr.Event) bool) routeBuilder { func (rb routeBuilder) Event(fn func(*nostr.Event) bool) routeBuilder {
rb.eventMatcher = fn rb.eventMatcher = fn
return rb return rb
} }
func (rb routeBuilder) AnyEvent() routeBuilder {
rb.eventMatcher = nil
return rb
}
func (rb routeBuilder) Relay(relay *Relay) { func (rb routeBuilder) Relay(relay *Relay) {
rb.router.routes = append(rb.router.routes, Route{ rb.router.routes = append(rb.router.routes, Route{
filterMatcher: rb.filterMatcher, filterMatcher: rb.filterMatcher,