@@ -108,7 +108,7 @@ func NewHandler(logger *zap.Logger, tokenVerifier *auth.OIDCTokenVerifier, oidcT
108108 return
109109 }
110110 logger .Debug ("Adding filter to filtersMap" )
111- fm .Set (trigger , createSubscriptionsAPIFilters (logger , trigger ))
111+ fm .Set (trigger , subscriptionsapi . CreateSubscriptionsAPIFilters (logger , trigger . Spec . Filters ))
112112 kncloudevents .AddOrUpdateAddressableHandler (clientConfig , duckv1.Addressable {
113113 URL : trigger .Status .SubscriberURI ,
114114 CACerts : trigger .Status .SubscriberCACerts ,
@@ -120,7 +120,7 @@ func NewHandler(logger *zap.Logger, tokenVerifier *auth.OIDCTokenVerifier, oidcT
120120 return
121121 }
122122 logger .Debug ("Updating filter in filtersMap" )
123- fm .Set (trigger , createSubscriptionsAPIFilters (logger , trigger ))
123+ fm .Set (trigger , subscriptionsapi . CreateSubscriptionsAPIFilters (logger , trigger . Spec . Filters ))
124124 kncloudevents .AddOrUpdateAddressableHandler (clientConfig , duckv1.Addressable {
125125 URL : trigger .Status .SubscriberURI ,
126126 CACerts : trigger .Status .SubscriberCACerts ,
@@ -581,70 +581,7 @@ func (h *Handler) filterEvent(ctx context.Context, trigger *eventingv1.Trigger,
581581}
582582
583583func applySubscriptionsAPIFilters (ctx context.Context , trigger * eventingv1.Trigger , event cloudevents.Event ) eventfilter.FilterResult {
584- return createSubscriptionsAPIFilters (logging .FromContext (ctx ).Desugar (), trigger ).Filter (ctx , event )
585- }
586-
587- func createSubscriptionsAPIFilters (logger * zap.Logger , trigger * eventingv1.Trigger ) eventfilter.Filter {
588- if len (trigger .Spec .Filters ) == 0 {
589- logger .Debug ("Found no filters for trigger" , zap .Any ("trigger.Spec" , trigger .Spec ))
590- return subscriptionsapi .NewNoFilter ()
591- }
592- return subscriptionsapi .NewAllFilter (MaterializeFiltersList (logger , trigger .Spec .Filters )... )
593- }
594-
595- func materializeSubscriptionsAPIFilter (logger * zap.Logger , filter eventingv1.SubscriptionsAPIFilter ) eventfilter.Filter {
596- var materializedFilter eventfilter.Filter
597- var err error
598- switch {
599- case len (filter .Exact ) > 0 :
600- // The webhook validates that this map has only a single key:value pair.
601- materializedFilter , err = subscriptionsapi .NewExactFilter (filter .Exact )
602- if err != nil {
603- logger .Debug ("Invalid exact expression" , zap .Any ("filters" , filter .Exact ), zap .Error (err ))
604- return nil
605- }
606- case len (filter .Prefix ) > 0 :
607- // The webhook validates that this map has only a single key:value pair.
608- materializedFilter , err = subscriptionsapi .NewPrefixFilter (filter .Prefix )
609- if err != nil {
610- logger .Debug ("Invalid prefix expression" , zap .Any ("filters" , filter .Exact ), zap .Error (err ))
611- return nil
612- }
613- case len (filter .Suffix ) > 0 :
614- // The webhook validates that this map has only a single key:value pair.
615- materializedFilter , err = subscriptionsapi .NewSuffixFilter (filter .Suffix )
616- if err != nil {
617- logger .Debug ("Invalid suffix expression" , zap .Any ("filters" , filter .Exact ), zap .Error (err ))
618- return nil
619- }
620- case len (filter .All ) > 0 :
621- materializedFilter = subscriptionsapi .NewAllFilter (MaterializeFiltersList (logger , filter .All )... )
622- case len (filter .Any ) > 0 :
623- materializedFilter = subscriptionsapi .NewAnyFilter (MaterializeFiltersList (logger , filter .Any )... )
624- case filter .Not != nil :
625- materializedFilter = subscriptionsapi .NewNotFilter (materializeSubscriptionsAPIFilter (logger , * filter .Not ))
626- case filter .CESQL != "" :
627- if materializedFilter , err = subscriptionsapi .NewCESQLFilter (filter .CESQL ); err != nil {
628- // This is weird, CESQL expression should be validated when Trigger's are created.
629- logger .Debug ("Found an Invalid CE SQL expression" , zap .String ("expression" , filter .CESQL ))
630- return nil
631- }
632- }
633- return materializedFilter
634- }
635-
636- // MaterialzieFilterList allows any component that supports `SubscriptionsAPIFilter` to process them
637- func MaterializeFiltersList (logger * zap.Logger , filters []eventingv1.SubscriptionsAPIFilter ) []eventfilter.Filter {
638- materializedFilters := make ([]eventfilter.Filter , 0 , len (filters ))
639- for _ , f := range filters {
640- f := materializeSubscriptionsAPIFilter (logger , f )
641- if f == nil {
642- logger .Warn ("Failed to parse filter. Skipping filter." , zap .Any ("filter" , f ))
643- continue
644- }
645- materializedFilters = append (materializedFilters , f )
646- }
647- return materializedFilters
584+ return subscriptionsapi .CreateSubscriptionsAPIFilters (logging .FromContext (ctx ).Desugar (), trigger .Spec .Filters ).Filter (ctx , event )
648585}
649586
650587func applyAttributesFilter (ctx context.Context , filter * eventingv1.TriggerFilter , event cloudevents.Event ) eventfilter.FilterResult {
0 commit comments