kopia lustrzana https://github.com/snarfed/bridgy-fed
rodzic
ee373095e2
commit
004726d397
|
@ -744,7 +744,7 @@ def postprocess_as2_actor(actor, user=None):
|
||||||
# required by pixelfed. https://github.com/snarfed/bridgy-fed/issues/39
|
# required by pixelfed. https://github.com/snarfed/bridgy-fed/issues/39
|
||||||
actor.setdefault('summary', '')
|
actor.setdefault('summary', '')
|
||||||
|
|
||||||
if not actor.get('publicKey'):
|
if not actor.get('publicKey') and not isinstance(user, ActivityPub):
|
||||||
# underspecified, inferred from this issue and Mastodon's implementation:
|
# underspecified, inferred from this issue and Mastodon's implementation:
|
||||||
# https://github.com/w3c/activitypub/issues/203#issuecomment-297553229
|
# https://github.com/w3c/activitypub/issues/203#issuecomment-297553229
|
||||||
# https://github.com/tootsuite/mastodon/blob/bc2c263504e584e154384ecc2d804aeb1afb1ba3/app/services/activitypub/process_account_service.rb#L77
|
# https://github.com/tootsuite/mastodon/blob/bc2c263504e584e154384ecc2d804aeb1afb1ba3/app/services/activitypub/process_account_service.rb#L77
|
||||||
|
@ -897,6 +897,12 @@ def follower_collection(id, collection):
|
||||||
|
|
||||||
TODO: unify page generation with outbox()
|
TODO: unify page generation with outbox()
|
||||||
"""
|
"""
|
||||||
|
if (request.path.startswith('/ap/')
|
||||||
|
and request.host in (PRIMARY_DOMAIN,) + LOCAL_DOMAINS):
|
||||||
|
# UI request. unfortunate that the URL paths overlap like this!
|
||||||
|
import pages
|
||||||
|
return pages.followers_or_following('ap', id, collection)
|
||||||
|
|
||||||
protocol = Protocol.for_request(fed='web')
|
protocol = Protocol.for_request(fed='web')
|
||||||
assert protocol
|
assert protocol
|
||||||
user = protocol.get_by_id(id)
|
user = protocol.get_by_id(id)
|
||||||
|
|
4
pages.py
4
pages.py
|
@ -20,7 +20,6 @@ from oauth_dropins.webutil.flask_util import (
|
||||||
redirect,
|
redirect,
|
||||||
)
|
)
|
||||||
|
|
||||||
from activitypub import ActivityPub
|
|
||||||
import common
|
import common
|
||||||
from common import DOMAIN_RE
|
from common import DOMAIN_RE
|
||||||
from flask_app import app, cache
|
from flask_app import app, cache
|
||||||
|
@ -169,7 +168,8 @@ def followers_or_following(protocol, id, collection):
|
||||||
f'{collection}.html',
|
f'{collection}.html',
|
||||||
address=request.args.get('address'),
|
address=request.args.get('address'),
|
||||||
follow_url=request.values.get('url'),
|
follow_url=request.values.get('url'),
|
||||||
ActivityPub=ActivityPub,
|
# TODO: remove
|
||||||
|
ActivityPub=PROTOCOLS['activitypub'],
|
||||||
**TEMPLATE_VARS,
|
**TEMPLATE_VARS,
|
||||||
**locals(),
|
**locals(),
|
||||||
)
|
)
|
||||||
|
|
|
@ -11,7 +11,8 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
{{ user_as1.get('displayName') or '' }}
|
{{ user_as1.get('displayName') or '' }}
|
||||||
{{ as2.address(ActivityPub.convert(f.user.obj) or url) or url }}
|
<!-- TODO: genericize -->
|
||||||
|
{{ as2.address(ActivityPub.convert(f.user.obj, from_user=user) or url) or url }}
|
||||||
</a>
|
</a>
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
|
|
||||||
|
|
|
@ -232,6 +232,18 @@ class PagesTest(TestCase):
|
||||||
got = self.client.get('/fake/fake:foo/followers')
|
got = self.client.get('/fake/fake:foo/followers')
|
||||||
self.assert_equals(200, got.status_code)
|
self.assert_equals(200, got.status_code)
|
||||||
|
|
||||||
|
def test_followers_activitypub(self):
|
||||||
|
obj = Object(id='https://inst/user', as2={
|
||||||
|
'id': 'https://inst/user',
|
||||||
|
'preferredUsername': 'user',
|
||||||
|
})
|
||||||
|
obj.put()
|
||||||
|
self.make_user('https://inst/user', cls=ActivityPub, obj=obj)
|
||||||
|
|
||||||
|
got = self.client.get('/ap/@user@inst/followers')
|
||||||
|
self.assert_equals(200, got.status_code)
|
||||||
|
self.assert_equals('text/html', got.headers['Content-Type'].split(';')[0])
|
||||||
|
|
||||||
def test_followers_empty(self):
|
def test_followers_empty(self):
|
||||||
got = self.client.get('/web/user.com/followers')
|
got = self.client.get('/web/user.com/followers')
|
||||||
self.assert_equals(200, got.status_code)
|
self.assert_equals(200, got.status_code)
|
||||||
|
|
Ładowanie…
Reference in New Issue