@@ -76,8 +76,27 @@ func IndexReceiverWebhookPath(o client.Object) []string {
7676 return nil
7777}
7878
79- func (s * ReceiverServer ) handlePayload (w http.ResponseWriter , r * http.Request ) {
80- ctx := context .Background ()
79+ func newReceiverHandler (logger logr.Logger , kubeClient client.Client , exportHTTPPathMetrics bool ) * receiverHandler {
80+ h := & receiverHandler {
81+ logger : logger .WithName ("receiver-server" ),
82+ kubeClient : kubeClient ,
83+ exportHTTPPathMetrics : exportHTTPPathMetrics ,
84+ ServeMux : http .NewServeMux (),
85+ }
86+ h .ServeMux .Handle (apiv1 .ReceiverWebhookPath , http .HandlerFunc (h .handlePayload ))
87+
88+ return h
89+ }
90+
91+ type receiverHandler struct {
92+ logger logr.Logger
93+ kubeClient client.Client
94+ exportHTTPPathMetrics bool
95+ * http.ServeMux
96+ }
97+
98+ func (s * receiverHandler ) handlePayload (w http.ResponseWriter , r * http.Request ) {
99+ ctx := r .Context ()
81100 digest := url .PathEscape (strings .TrimPrefix (r .RequestURI , apiv1 .ReceiverWebhookPath ))
82101
83102 s .logger .Info (fmt .Sprintf ("handling request: %s" , digest ))
@@ -149,7 +168,7 @@ func (s *ReceiverServer) handlePayload(w http.ResponseWriter, r *http.Request) {
149168 }
150169}
151170
152- func (s * ReceiverServer ) validate (ctx context.Context , receiver apiv1.Receiver , r * http.Request ) error {
171+ func (s * receiverHandler ) validate (ctx context.Context , receiver apiv1.Receiver , r * http.Request ) error {
153172 token , err := s .token (ctx , receiver )
154173 if err != nil {
155174 return fmt .Errorf ("unable to read token, error: %w" , err )
@@ -393,7 +412,7 @@ func (s *ReceiverServer) validate(ctx context.Context, receiver apiv1.Receiver,
393412 return fmt .Errorf ("recevier type '%s' not supported" , receiver .Spec .Type )
394413}
395414
396- func (s * ReceiverServer ) token (ctx context.Context , receiver apiv1.Receiver ) (string , error ) {
415+ func (s * receiverHandler ) token (ctx context.Context , receiver apiv1.Receiver ) (string , error ) {
397416 token := ""
398417 secretName := types.NamespacedName {
399418 Namespace : receiver .GetNamespace (),
@@ -416,7 +435,7 @@ func (s *ReceiverServer) token(ctx context.Context, receiver apiv1.Receiver) (st
416435}
417436
418437// requestReconciliation requests reconciliation of all the resources matching the given CrossNamespaceObjectReference by annotating them accordingly.
419- func (s * ReceiverServer ) requestReconciliation (ctx context.Context , logger logr.Logger , resource apiv1.CrossNamespaceObjectReference , defaultNamespace string ) error {
438+ func (s * receiverHandler ) requestReconciliation (ctx context.Context , logger logr.Logger , resource apiv1.CrossNamespaceObjectReference , defaultNamespace string ) error {
420439 namespace := defaultNamespace
421440 if resource .Namespace != "" {
422441 namespace = resource .Namespace
@@ -499,7 +518,7 @@ func (s *ReceiverServer) requestReconciliation(ctx context.Context, logger logr.
499518 return nil
500519}
501520
502- func (s * ReceiverServer ) annotate (ctx context.Context , resource * metav1.PartialObjectMetadata ) error {
521+ func (s * receiverHandler ) annotate (ctx context.Context , resource * metav1.PartialObjectMetadata ) error {
503522 patch := client .MergeFrom (resource .DeepCopy ())
504523 sourceAnnotations := resource .GetAnnotations ()
505524
@@ -564,7 +583,7 @@ func getGroupVersion(s string) (string, string) {
564583 return slice [0 ], slice [1 ]
565584}
566585
567- func (s * ReceiverServer ) evaluateResourceExpressions (r * http.Request , receiver apiv1.Receiver ) ([]apiv1.CrossNamespaceObjectReference , error ) {
586+ func (s * receiverHandler ) evaluateResourceExpressions (r * http.Request , receiver apiv1.Receiver ) ([]apiv1.CrossNamespaceObjectReference , error ) {
568587 if len (receiver .Spec .ResourceExpressions ) == 0 {
569588 return nil , nil
570589 }
0 commit comments