kopia lustrzana https://github.com/snarfed/bridgy-fed
noop: convert a few %s'es to f-strings
thanks flynt! https://github.com/ikamensh/flyntpull/386/head
rodzic
965554a714
commit
bb2d3e03de
|
@ -72,8 +72,7 @@ def inbox(domain=None):
|
||||||
if type == 'Accept': # eg in response to a Follow
|
if type == 'Accept': # eg in response to a Follow
|
||||||
return '' # noop
|
return '' # noop
|
||||||
if type not in SUPPORTED_TYPES:
|
if type not in SUPPORTED_TYPES:
|
||||||
error('Sorry, %s activities are not supported yet.' % type,
|
error(f'Sorry, {type} activities are not supported yet.', status=501)
|
||||||
status=501)
|
|
||||||
|
|
||||||
# TODO: verify signature if there is one
|
# TODO: verify signature if there is one
|
||||||
|
|
||||||
|
@ -161,12 +160,12 @@ def accept_follow(follow, follow_unwrapped, user):
|
||||||
if isinstance(followee_unwrapped, dict) else followee_unwrapped)
|
if isinstance(followee_unwrapped, dict) else followee_unwrapped)
|
||||||
follower = follow.get('actor')
|
follower = follow.get('actor')
|
||||||
if not followee or not followee_id or not follower:
|
if not followee or not followee_id or not follower:
|
||||||
error('Follow activity requires object and actor. Got: %s' % follow)
|
error(f'Follow activity requires object and actor. Got: {follow}')
|
||||||
|
|
||||||
inbox = follower.get('inbox')
|
inbox = follower.get('inbox')
|
||||||
follower_id = follower.get('id')
|
follower_id = follower.get('id')
|
||||||
if not inbox or not follower_id:
|
if not inbox or not follower_id:
|
||||||
error('Follow actor requires id and inbox. Got: %s', follower)
|
error(f'Follow actor requires id and inbox. Got: {follower}')
|
||||||
|
|
||||||
# rendered mf2 HTML proxy pages (in render.py) fall back to redirecting to
|
# rendered mf2 HTML proxy pages (in render.py) fall back to redirecting to
|
||||||
# the follow's AS2 id field, but Mastodon's ids are URLs that don't load in
|
# the follow's AS2 id field, but Mastodon's ids are URLs that don't load in
|
||||||
|
@ -189,8 +188,8 @@ def accept_follow(follow, follow_unwrapped, user):
|
||||||
# send AP Accept
|
# send AP Accept
|
||||||
accept = {
|
accept = {
|
||||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||||
'id': util.tag_uri(common.PRIMARY_DOMAIN, 'accept/%s/%s' % (
|
'id': util.tag_uri(common.PRIMARY_DOMAIN,
|
||||||
(followee_domain, follow.get('id')))),
|
f'accept/{followee_domain}/{follow.get("id")}'),
|
||||||
'type': 'Accept',
|
'type': 'Accept',
|
||||||
'actor': followee,
|
'actor': followee,
|
||||||
'object': {
|
'object': {
|
||||||
|
@ -223,7 +222,7 @@ def undo_follow(undo_unwrapped):
|
||||||
if isinstance(followee, dict):
|
if isinstance(followee, dict):
|
||||||
followee = followee.get('id') or util.get_url(followee)
|
followee = followee.get('id') or util.get_url(followee)
|
||||||
if not follower or not followee:
|
if not follower or not followee:
|
||||||
error('Undo of Follow requires object with actor and object. Got: %s' % follow)
|
error(f'Undo of Follow requires object with actor and object. Got: {follow}')
|
||||||
|
|
||||||
# deactivate Follower
|
# deactivate Follower
|
||||||
user_domain = util.domain_from_link(followee, minimize=False)
|
user_domain = util.domain_from_link(followee, minimize=False)
|
||||||
|
|
|
@ -198,7 +198,7 @@ def get_as2(url, user=None):
|
||||||
requests_response attribute with the last requests.Response we received.
|
requests_response attribute with the last requests.Response we received.
|
||||||
"""
|
"""
|
||||||
def _error(resp):
|
def _error(resp):
|
||||||
msg = "Couldn't fetch %s as ActivityStreams 2" % url
|
msg = f"Couldn't fetch {url} as ActivityStreams 2"
|
||||||
logger.warning(msg)
|
logger.warning(msg)
|
||||||
err = BadGateway(msg)
|
err = BadGateway(msg)
|
||||||
err.requests_response = resp
|
err.requests_response = resp
|
||||||
|
@ -374,7 +374,7 @@ def postprocess_as2(activity, user=None, target=None, create=True):
|
||||||
if len(in_reply_to) > 1:
|
if len(in_reply_to) > 1:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
"AS2 doesn't support multiple inReplyTo URLs! "
|
"AS2 doesn't support multiple inReplyTo URLs! "
|
||||||
'Only using the first: %s' % in_reply_to[0])
|
f'Only using the first: {in_reply_to[0]}')
|
||||||
activity['inReplyTo'] = in_reply_to[0]
|
activity['inReplyTo'] = in_reply_to[0]
|
||||||
|
|
||||||
# Mastodon evidently requires a Mention tag for replies to generate a
|
# Mastodon evidently requires a Mention tag for replies to generate a
|
||||||
|
|
|
@ -96,8 +96,7 @@ class User(StringIdModel):
|
||||||
return user
|
return user
|
||||||
|
|
||||||
def href(self):
|
def href(self):
|
||||||
return 'data:application/magic-public-key,RSA.%s.%s' % (
|
return f'data:application/magic-public-key,RSA.{self.mod}.{self.public_exponent}'
|
||||||
self.mod, self.public_exponent)
|
|
||||||
|
|
||||||
def public_pem(self):
|
def public_pem(self):
|
||||||
"""Returns: bytes"""
|
"""Returns: bytes"""
|
||||||
|
@ -317,7 +316,7 @@ class Activity(StringIdModel):
|
||||||
def _id(cls, source, target):
|
def _id(cls, source, target):
|
||||||
assert source
|
assert source
|
||||||
assert target
|
assert target
|
||||||
return '%s %s' % (cls._encode(source), cls._encode(target))
|
return f'{cls._encode(source)} {cls._encode(target)}'
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _encode(cls, val):
|
def _encode(cls, val):
|
||||||
|
@ -352,7 +351,7 @@ class Follower(StringIdModel):
|
||||||
def _id(cls, dest, src):
|
def _id(cls, dest, src):
|
||||||
assert src
|
assert src
|
||||||
assert dest
|
assert dest
|
||||||
return '%s %s' % (dest, src)
|
return f'{dest} {src}'
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_or_create(cls, dest, src, **kwargs):
|
def get_or_create(cls, dest, src, **kwargs):
|
||||||
|
|
|
@ -188,8 +188,8 @@ class WebfingerTest(testutil.TestCase):
|
||||||
'foo.com', 'http://foo.com/', 'https://foo.com/',
|
'foo.com', 'http://foo.com/', 'https://foo.com/',
|
||||||
'http://localhost/foo.com'):
|
'http://localhost/foo.com'):
|
||||||
with self.subTest(resource=resource):
|
with self.subTest(resource=resource):
|
||||||
url = '/.well-known/webfinger?%s' % urllib.parse.urlencode(
|
url = (f'/.well-known/webfinger?' +
|
||||||
{'resource': resource})
|
urllib.parse.urlencode({'resource': resource}))
|
||||||
got = self.client.get(url, headers={'Accept': 'application/json'})
|
got = self.client.get(url, headers={'Accept': 'application/json'})
|
||||||
self.assertEqual(200, got.status_code, got.get_data(as_text=True))
|
self.assertEqual(200, got.status_code, got.get_data(as_text=True))
|
||||||
self.assertEqual('application/jrd+json', got.headers['Content-Type'])
|
self.assertEqual('application/jrd+json', got.headers['Content-Type'])
|
||||||
|
@ -232,8 +232,8 @@ class WebfingerTest(testutil.TestCase):
|
||||||
'acct:foo.com@localhost',
|
'acct:foo.com@localhost',
|
||||||
):
|
):
|
||||||
with self.subTest(resource=resource):
|
with self.subTest(resource=resource):
|
||||||
url = '/.well-known/webfinger?%s' % urllib.parse.urlencode(
|
url = (f'/.well-known/webfinger?' +
|
||||||
{'resource': resource})
|
urllib.parse.urlencode({'resource': resource}))
|
||||||
got = self.client.get(url, headers={'Accept': 'application/json'})
|
got = self.client.get(url, headers={'Accept': 'application/json'})
|
||||||
self.assertEqual(200, got.status_code, got.get_data(as_text=True))
|
self.assertEqual(200, got.status_code, got.get_data(as_text=True))
|
||||||
self.assertEqual('application/jrd+json', got.headers['Content-Type'])
|
self.assertEqual('application/jrd+json', got.headers['Content-Type'])
|
||||||
|
|
|
@ -763,7 +763,7 @@ class WebmentionTest(testutil.TestCase):
|
||||||
self.update_as2 if inbox == 'https://updated/inbox' else self.create_as2,
|
self.update_as2 if inbox == 'https://updated/inbox' else self.create_as2,
|
||||||
json_loads(call[1]['data']))
|
json_loads(call[1]['data']))
|
||||||
|
|
||||||
activity = Activity.get_by_id('https://orig/post %s' % inbox)
|
activity = Activity.get_by_id(f'https://orig/post {inbox}')
|
||||||
self.assertEqual(['orig'], activity.domain)
|
self.assertEqual(['orig'], activity.domain)
|
||||||
self.assertEqual('out', activity.direction, inbox)
|
self.assertEqual('out', activity.direction, inbox)
|
||||||
self.assertEqual('activitypub', activity.protocol, inbox)
|
self.assertEqual('activitypub', activity.protocol, inbox)
|
||||||
|
|
|
@ -25,7 +25,7 @@ class TestCase(unittest.TestCase, testutil.Asserts):
|
||||||
self.client = app.test_client()
|
self.client = app.test_client()
|
||||||
|
|
||||||
# clear datastore
|
# clear datastore
|
||||||
requests.post('http://%s/reset' % ndb_client.host)
|
requests.post(f'http://{ndb_client.host}/reset')
|
||||||
self.ndb_context = ndb_client.context()
|
self.ndb_context = ndb_client.context()
|
||||||
self.ndb_context.__enter__()
|
self.ndb_context.__enter__()
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue