diff --git a/activitypub.py b/activitypub.py index a6d87cd2..e94fb593 100644 --- a/activitypub.py +++ b/activitypub.py @@ -21,6 +21,7 @@ from requests import TooManyRedirects from requests.models import DEFAULT_REDIRECT_LIMIT from werkzeug.exceptions import BadGateway +import atproto from flask_app import app import common @@ -591,6 +592,17 @@ def _load_key(cls, key_id, follow_owner=True): return actor + @classmethod + def bridged_web_url_for(cls, user, fallback=False): + """Returns a bridged user's profile URL on ``https://bsky.brid.gy/r/*``. + + For example, returns ``https://bsky.brid.gy/r/https://bsky.app/profile/alice.bsky.social`` + for BlueSky user ``alice.bsky.social``. + """ + if isinstance(user, atproto.ATProto): + return f"https://bsky.brid.gy/r/{user.web_url()}" + return super().bridged_web_url_for(user, fallback) + def signed_get(url, from_user=None, **kwargs): return signed_request(util.requests_get, url, from_user=from_user, **kwargs)