Protocol.for_id: return Web for protocol bot users

pull/968/head
Ryan Barrett 2024-04-23 09:39:30 -07:00
rodzic d4a56127d9
commit 304994e3b7
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 6BE31FDF4776E9D4
2 zmienionych plików z 9 dodań i 3 usunięć

Wyświetl plik

@ -4,7 +4,7 @@ from datetime import timedelta
import logging import logging
import re import re
from threading import Lock from threading import Lock
from urllib.parse import urljoin from urllib.parse import urljoin, urlparse
from cachetools import cached, LRUCache from cachetools import cached, LRUCache
from flask import g, request from flask import g, request
@ -301,10 +301,11 @@ class Protocol:
if not id: if not id:
return None return None
# step 1: check for our per-protocol subdomains
if util.is_web(id): if util.is_web(id):
# step 1: check for our per-protocol subdomains
is_homepage = urlparse(id).path.strip('/') == ''
by_subdomain = Protocol.for_bridgy_subdomain(id) by_subdomain = Protocol.for_bridgy_subdomain(id)
if by_subdomain: if by_subdomain and not is_homepage:
logger.info(f' {by_subdomain.LABEL} owns id {id}') logger.info(f' {by_subdomain.LABEL} owns id {id}')
return by_subdomain return by_subdomain

Wyświetl plik

@ -90,8 +90,13 @@ class ProtocolTest(TestCase):
('foo://bar', None), ('foo://bar', None),
('fake:foo', Fake), ('fake:foo', Fake),
('at://foo', ATProto), ('at://foo', ATProto),
# TODO: remove? should we require normalized ids?
('https://ap.brid.gy/foo/bar', ActivityPub), ('https://ap.brid.gy/foo/bar', ActivityPub),
('https://web.brid.gy/foo/bar', Web), ('https://web.brid.gy/foo/bar', Web),
('https://fed.brid.gy/', Web),
('https://web.brid.gy/', Web),
('https://bsky.brid.gy/', Web),
('bsky.brid.gy', Web),
]: ]:
self.assertEqual(expected, Protocol.for_id(id, remote=False)) self.assertEqual(expected, Protocol.for_id(id, remote=False))
self.assertEqual(expected, Protocol.for_id(id, remote=True)) self.assertEqual(expected, Protocol.for_id(id, remote=True))