kopia lustrzana https://gitlab.com/jaywink/federation
Don't crash loudly when fetching webfinger for Diaspora that does not contain XML
rodzic
1f2fdf3459
commit
f6b2bb6d05
|
@ -2,6 +2,10 @@
|
|||
|
||||
## [0.20.0-dev] - unreleased
|
||||
|
||||
### Fixed
|
||||
|
||||
* Don't crash loudly when fetching webfinger for Diaspora that does not contain XML.
|
||||
|
||||
## [0.19.0] - 2019-12-15
|
||||
|
||||
### Added
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import json
|
||||
import logging
|
||||
import xml
|
||||
from typing import Callable
|
||||
from typing import Callable, Dict
|
||||
from urllib.parse import quote
|
||||
|
||||
from lxml import html
|
||||
|
@ -25,7 +25,7 @@ def fetch_public_key(handle):
|
|||
return profile.public_key
|
||||
|
||||
|
||||
def parse_diaspora_webfinger(document):
|
||||
def parse_diaspora_webfinger(document: str) -> Dict:
|
||||
"""
|
||||
Parse Diaspora webfinger which is either in JSON format (new) or XRD (old).
|
||||
|
||||
|
@ -34,6 +34,7 @@ def parse_diaspora_webfinger(document):
|
|||
webfinger = {
|
||||
"hcard_url": None,
|
||||
}
|
||||
# noinspection PyBroadException
|
||||
try:
|
||||
doc = json.loads(document)
|
||||
for link in doc["links"]:
|
||||
|
@ -47,8 +48,8 @@ def parse_diaspora_webfinger(document):
|
|||
try:
|
||||
xrd = XRD.parse_xrd(document)
|
||||
webfinger["hcard_url"] = xrd.find_link(rels="http://microformats.org/profile/hcard").href
|
||||
except xml.parsers.expat.ExpatError:
|
||||
logger.warning("parse_diaspora_webfinger: found XML webfinger but it fails to parse (ExpatError)")
|
||||
except (xml.parsers.expat.ExpatError, TypeError):
|
||||
logger.warning("parse_diaspora_webfinger: found XML webfinger but it fails to parse")
|
||||
pass
|
||||
return webfinger
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue