summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/exceptions.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/core/exceptions.py b/core/exceptions.py
index 4475538..f8c0c50 100644
--- a/core/exceptions.py
+++ b/core/exceptions.py
@@ -1,3 +1,9 @@
+import traceback
+
+from asgiref.sync import sync_to_async
+from django.conf import settings
+
+
class ActivityPubError(BaseException):
"""
A problem with an ActivityPub message
@@ -8,3 +14,30 @@ class ActorMismatchError(ActivityPubError):
"""
The actor is not authorised to do the action we saw
"""
+
+
+def capture_message(message: str):
+ """
+ Sends the informational message to Sentry if it's configured
+ """
+ if settings.SENTRY_ENABLED:
+ from sentry_sdk import capture_message
+
+ capture_message(message)
+ elif settings.DEBUG:
+ print(message)
+
+
+def capture_exception(exception: BaseException):
+ """
+ Sends the exception to Sentry if it's configured
+ """
+ if settings.SENTRY_ENABLED:
+ from sentry_sdk import capture_exception
+
+ capture_exception(exception)
+ elif settings.DEBUG:
+ traceback.print_exc()
+
+
+acapture_exception = sync_to_async(capture_exception, thread_sensitive=False)