package app

import (
	"context"
	"net/http"

	"github.com/tidbcloud/AgentTeam/internal/store/app/webhooks"
)

type serviceEventProviderAppHandler struct {
	store *Store
}

func (handler serviceEventProviderAppHandler) HandleWebhook(ctx context.Context, app webhooks.AppDefinition, headers http.Header, payload []byte) (AppWebhookResult, error) {
	event, ok, err := handler.store.normalizeServiceEventProviderWebhookEvent(ctx, app, headers, payload)
	if err != nil || !ok {
		return AppWebhookResult{}, err
	}
	adapter, err := newServiceEventDeliveryDispatcher(handler.store, app, event, payload)
	if err != nil {
		return AppWebhookResult{}, err
	}
	return adapter.DispatchEvent(ctx)
}
