webfinger: add XRD support

for #12
pull/79/head
Ryan Barrett 2021-03-11 21:05:13 -08:00
rodzic 2bae0c999c
commit a4fede524f
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 6BE31FDF4776E9D4
2 zmienionych plików z 13 dodań i 33 usunięć

Wyświetl plik

@ -1,37 +1,19 @@
<?xml version='1.0' encoding='UTF-8'?>
<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'>
<Subject>{{ uri }}</Subject>
<Alias>{{ urls[0] }}</Alias>
{% for url in urls %}
<Link rel='http://webfinger.net/rel/profile-page' type='text/html'
href='{{ url }}' />
<Subject>{{ subject }}</Subject>
{% for alias in aliases %}
<Alias>{{ alias }}</Alias>
{% endfor %}
{% if magic_public_key %}
{% for link in links %}
<Link rel='{{ link.rel }}' type='{{ link.type }}' href='{{ link.href }}' />
{% endfor %}
{% for key in magic_keys %}
<Property xmlns:mk="http://salmon-protocol.org/ns/magic-key"
type="http://salmon-protocol.org/ns/magic-key">
{{ magic_public_key }}
{{ key.value }}
</Property>
<Link rel='magic-public-key'
href='{{ magic_public_key }}' />
{% endif %}
{% for avatar in avatars %}
<Link rel='http://webfinger.net/rel/avatar'
href='{{ avatar }}' />
{% endfor %}
{% if poco_url %}
<Link rel='http://portablecontacts.net/spec/1.0'
href='{{ poco_url }}' />
{% endif %}
{% if activitystreams_url %}
<Link rel='http://ns.opensocial.org/2008/opensocial/activitystreams'
href='{{ activitystreams_url }}' />
<Link rel='http://activitystrea.ms/spec/1.0'
href='{{ activitystreams_url }}' />
{% endif %}
</XRD>

Wyświetl plik

@ -15,6 +15,7 @@ import logging
import urllib.parse
import urllib.parse
from granary.microformats2 import get_text
import mf2util
from oauth_dropins.webutil import handlers, util
from oauth_dropins.webutil.util import json_dumps
@ -31,8 +32,9 @@ class UserHandler(common.Handler, handlers.XrdOrJrdHandler):
"""Fetches a site's home page, converts its mf2 to WebFinger, and serves."""
JRD_TEMPLATE = False
@handlers.cache_response(CACHE_TIME)
@handlers.cache_response(CACHE_TIME, headers=['Accept'])
def get(self, *args, **kwargs):
logging.debug(f'Headers: {self.request.headers.items()}')
return super(UserHandler, self).get(*args, **kwargs)
def template_prefix(self):
@ -97,7 +99,6 @@ Couldn't find a representative h-card (http://microformats.org/wiki/representati
else:
hub = 'https://bridgy-fed.superfeedr.com/'
# generate webfinger content
data = util.trim_nulls({
'subject': 'acct:' + acct,
@ -109,7 +110,7 @@ Couldn't find a representative h-card (http://microformats.org/wiki/representati
'href': url,
}] for url in urls if url.startswith("http")), []) + [{
'rel': 'http://webfinger.net/rel/avatar',
'href': url,
'href': get_text(url),
} for url in props.get('photo', [])] + [{
'rel': 'canonical_uri',
'type': 'text/html',
@ -151,9 +152,6 @@ Couldn't find a representative h-card (http://microformats.org/wiki/representati
class WebfingerHandler(UserHandler):
def is_jrd(self):
return True
def template_vars(self):
resource = util.get_required_param(self, 'resource')
try: