diff --git a/website/contrib/unsplash/apps.py b/website/contrib/unsplash/apps.py new file mode 100644 index 0000000..8da7dd5 --- /dev/null +++ b/website/contrib/unsplash/apps.py @@ -0,0 +1,11 @@ +from django.apps import AppConfig +from health_check.plugins import plugin_dir + + +class UnsplashAppConfig(AppConfig): + name = "website.contrib.unsplash" + + def ready(self) -> None: + from .healthchecks import UnsplashHealthCheckBackend + + plugin_dir.register(UnsplashHealthCheckBackend) diff --git a/website/contrib/unsplash/healthchecks.py b/website/contrib/unsplash/healthchecks.py new file mode 100644 index 0000000..97adfcf --- /dev/null +++ b/website/contrib/unsplash/healthchecks.py @@ -0,0 +1,20 @@ +import requests +from django.conf import settings +from health_check.backends import BaseHealthCheckBackend + + +class UnsplashHealthCheckBackend(BaseHealthCheckBackend): + def check_status(self) -> None: + try: + requests.get( + "https://api.unsplash.com/me", + headers={ + "Accept-Version": "v1", + "Authorization": f"Client-ID {settings.UNSPLASH_CLIENT_ID}", + }, + ).raise_for_status() + except Exception as e: + self.add_error(str(e)) + + def identifier(self) -> str: + return "Unsplash API"