CI events flow simplified

This commit is contained in:
Piotr Dec 2025-11-01 23:02:28 +01:00
parent 29dfc13a48
commit 34ee5f8754
Signed by: stawros
GPG key ID: 74B18A3F0F1E99C0
7 changed files with 59 additions and 174 deletions

View file

@ -4,10 +4,9 @@ from fastapi_utils.cbv import cbv
from starlette.responses import JSONResponse, Response
from app.api.models import Request
from app.core.core import WebhookProcessor
from app.core.injects import AutowireSupport
from app.events import SimpleEventBus
from app.model.webhook import WebhookEvent
from app.core.woodpecker import Woodpecker
from app.model.webhook import WoodpeckerEvent
router = APIRouter()
@ -19,22 +18,21 @@ async def root():
@cbv(router)
class APIv1:
webhook_service: WebhookProcessor = Depends(AutowireSupport.webhook_processor)
event_bus: SimpleEventBus = Depends(AutowireSupport.event_bus)
woodpecker: Woodpecker = Depends(AutowireSupport.woodpecker)
logger = __import__('logging').getLogger(__name__)
def __init__(self):
try: # TODO: rejestracja w innym miejscu: klasa jest przeładowywana co żądanie
mapper.add(Request, WebhookEvent)
try: # TODO: rejestracja w innym miejscu: klasa jest przeładowywana co żądanie
mapper.add(Request, WoodpeckerEvent)
except exceptions.DuplicatedRegistrationError:
pass
@router.get("/health", summary="Health check")
async def health(self) -> JSONResponse:
# TODO: JSON serialize
return JSONResponse({"status": self.webhook_service.health.healthy})
return JSONResponse({"status": "unknown"})
@router.post("/ci", summary="CI Webhook")
async def ci(self, request: Request):
self.event_bus.publish(mapper.map(request))
self.woodpecker.on_ci_event(mapper.map(request))
return Response(status_code=201)