@@ -77,8 +77,27 @@ func IndexReceiverWebhookPath(o client.Object) []string {
77
77
return nil
78
78
}
79
79
80
- func (s * ReceiverServer ) handlePayload (w http.ResponseWriter , r * http.Request ) {
81
- ctx := context .Background ()
80
+ func newReceiverHandler (logger logr.Logger , kubeClient client.Client , exportHTTPPathMetrics bool ) * receiverHandler {
81
+ h := & receiverHandler {
82
+ logger : logger .WithName ("receiver-server" ),
83
+ kubeClient : kubeClient ,
84
+ exportHTTPPathMetrics : exportHTTPPathMetrics ,
85
+ ServeMux : http .NewServeMux (),
86
+ }
87
+ h .ServeMux .Handle (apiv1 .ReceiverWebhookPath , http .HandlerFunc (h .handlePayload ))
88
+
89
+ return h
90
+ }
91
+
92
+ type receiverHandler struct {
93
+ logger logr.Logger
94
+ kubeClient client.Client
95
+ exportHTTPPathMetrics bool
96
+ * http.ServeMux
97
+ }
98
+
99
+ func (s * receiverHandler ) handlePayload (w http.ResponseWriter , r * http.Request ) {
100
+ ctx := r .Context ()
82
101
digest := url .PathEscape (strings .TrimPrefix (r .RequestURI , apiv1 .ReceiverWebhookPath ))
83
102
84
103
s .logger .Info (fmt .Sprintf ("handling request: %s" , digest ))
@@ -150,7 +169,7 @@ func (s *ReceiverServer) handlePayload(w http.ResponseWriter, r *http.Request) {
150
169
}
151
170
}
152
171
153
- func (s * ReceiverServer ) validate (ctx context.Context , receiver apiv1.Receiver , r * http.Request ) error {
172
+ func (s * receiverHandler ) validate (ctx context.Context , receiver apiv1.Receiver , r * http.Request ) error {
154
173
token , err := s .token (ctx , receiver )
155
174
if err != nil {
156
175
return fmt .Errorf ("unable to read token, error: %w" , err )
@@ -394,7 +413,7 @@ func (s *ReceiverServer) validate(ctx context.Context, receiver apiv1.Receiver,
394
413
return fmt .Errorf ("recevier type '%s' not supported" , receiver .Spec .Type )
395
414
}
396
415
397
- func (s * ReceiverServer ) token (ctx context.Context , receiver apiv1.Receiver ) (string , error ) {
416
+ func (s * receiverHandler ) token (ctx context.Context , receiver apiv1.Receiver ) (string , error ) {
398
417
token := ""
399
418
secretName := types.NamespacedName {
400
419
Namespace : receiver .GetNamespace (),
@@ -417,7 +436,7 @@ func (s *ReceiverServer) token(ctx context.Context, receiver apiv1.Receiver) (st
417
436
}
418
437
419
438
// requestReconciliation requests reconciliation of all the resources matching the given CrossNamespaceObjectReference by annotating them accordingly.
420
- func (s * ReceiverServer ) requestReconciliation (ctx context.Context , logger logr.Logger , resource apiv1.CrossNamespaceObjectReference , defaultNamespace string ) error {
439
+ func (s * receiverHandler ) requestReconciliation (ctx context.Context , logger logr.Logger , resource apiv1.CrossNamespaceObjectReference , defaultNamespace string ) error {
421
440
namespace := defaultNamespace
422
441
if resource .Namespace != "" {
423
442
namespace = resource .Namespace
@@ -500,7 +519,7 @@ func (s *ReceiverServer) requestReconciliation(ctx context.Context, logger logr.
500
519
return nil
501
520
}
502
521
503
- func (s * ReceiverServer ) annotate (ctx context.Context , resource * metav1.PartialObjectMetadata ) error {
522
+ func (s * receiverHandler ) annotate (ctx context.Context , resource * metav1.PartialObjectMetadata ) error {
504
523
patch := client .MergeFrom (resource .DeepCopy ())
505
524
sourceAnnotations := resource .GetAnnotations ()
506
525
@@ -565,7 +584,7 @@ func getGroupVersion(s string) (string, string) {
565
584
return slice [0 ], slice [1 ]
566
585
}
567
586
568
- func (s * ReceiverServer ) evaluateResourceExpressions (r * http.Request , receiver apiv1.Receiver ) ([]apiv1.CrossNamespaceObjectReference , error ) {
587
+ func (s * receiverHandler ) evaluateResourceExpressions (r * http.Request , receiver apiv1.Receiver ) ([]apiv1.CrossNamespaceObjectReference , error ) {
569
588
if len (receiver .Spec .ResourceExpressions ) == 0 {
570
589
return nil , nil
571
590
}
0 commit comments