From 7cf521c00124a80aba6e6cb9765757b1c5d22603 Mon Sep 17 00:00:00 2001 From: mrT23 Date: Thu, 27 Feb 2025 11:53:11 +0200 Subject: [PATCH] fix: improve null safety in GitLab webhook handler --- pr_agent/servers/gitlab_webhook.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pr_agent/servers/gitlab_webhook.py b/pr_agent/servers/gitlab_webhook.py index c4c76572..76739a96 100644 --- a/pr_agent/servers/gitlab_webhook.py +++ b/pr_agent/servers/gitlab_webhook.py @@ -198,9 +198,9 @@ async def gitlab_webhook(background_tasks: BackgroundTasks, request: Request): # ignore MRs based on title, labels, source and target branches if not should_process_pr_logic(data): return JSONResponse(status_code=status.HTTP_200_OK, content=jsonable_encoder({"message": "success"})) - - if data['object_attributes'].get('action') in ['open', 'reopen']: - url = data['object_attributes'].get('url') + object_attributes = data.get('object_attributes', {}) + if object_attributes.get('action') in ['open', 'reopen']: + url = object_attributes.get('url') get_logger().info(f"New merge request: {url}") if is_draft(data): get_logger().info(f"Skipping draft MR: {url}") @@ -209,8 +209,8 @@ async def gitlab_webhook(background_tasks: BackgroundTasks, request: Request): await _perform_commands_gitlab("pr_commands", PRAgent(), url, log_context, data) # for push event triggered merge requests - elif data['object_attributes'].get('action') == 'update' and data['object_attributes'].get('oldrev'): - url = data['object_attributes'].get('url') + elif object_attributes.get('action') == 'update' and object_attributes.get('oldrev'): + url = object_attributes.get('url') get_logger().info(f"New merge request: {url}") if is_draft(data): get_logger().info(f"Skipping draft MR: {url}") @@ -227,8 +227,8 @@ async def gitlab_webhook(background_tasks: BackgroundTasks, request: Request): await _perform_commands_gitlab("push_commands", PRAgent(), url, log_context, data) # for draft to ready triggered merge requests - elif data['object_attributes'].get('action') == 'update' and is_draft_ready(data): - url = data['object_attributes'].get('url') + elif object_attributes.get('action') == 'update' and is_draft_ready(data): + url = object_attributes.get('url') get_logger().info(f"Draft MR is ready: {url}") # same as open MR