From ebf342c73ba32eec13eb77d85794abab8b11a1f0 Mon Sep 17 00:00:00 2001 From: Untone Date: Thu, 22 Feb 2024 21:18:20 +0300 Subject: [PATCH] webhook-fix --- services/webhook.py | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/services/webhook.py b/services/webhook.py index 0748c79e..818f3cdb 100644 --- a/services/webhook.py +++ b/services/webhook.py @@ -8,6 +8,7 @@ from starlette.responses import JSONResponse from orm.author import Author from resolvers.author import create_author from services.db import local_session +from services.logger import root_logger as logger class WebhookEndpoint(HTTPEndpoint): @@ -18,19 +19,22 @@ class WebhookEndpoint(HTTPEndpoint): auth = request.headers.get('Authorization') if auth: if auth == os.environ.get('WEBHOOK_SECRET'): - user_id: str = data['user']['id'] - name: str = data['user']['given_name'] - slug: str = data['user']['email'].split('@')[0] - slug: str = re.sub('[^0-9a-z]+', '-', slug.lower()) - with local_session() as session: - author = ( - session.query(Author) - .filter(Author.slug == slug) - .first() - ) - if author: - slug = slug + '-' + user_id.split('-').pop() - await create_author(user_id, slug, name) + logger.debug(data) + user = data.get('user') + if isinstance(user, dict): + user_id: str = user.get('id') + name: str = user.get('given_name', user.get('slug')) + slug: str = user.get('email', '').split('@')[0] + slug: str = re.sub('[^0-9a-z]+', '-', slug.lower()) + with local_session() as session: + author = ( + session.query(Author) + .filter(Author.slug == slug) + .first() + ) + if author: + slug = slug + '-' + user_id.split('-').pop() + await create_author(user_id, slug, name) return JSONResponse({'status': 'success'}) except Exception as e: