diff --git a/CHANGELOG.md b/CHANGELOG.md index 32328e0..fc05b25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ ### Changed * Deprecate receiving user `key` attribute for Diaspora protocol. Instead correct attribute is now `private_key` for any user passed to `federation.inbound.handle_receive`. We already use `private_key` in the message creation code so this is just to unify the user related required attributes. * DEPRECATION: There is a fallback with `key` for user objects in the receiving payload part of the Diaspora protocol until 0.8.0. + +### Fixes +* Loosen up hCard selectors when parsing profile from hCard document in `federation.utils.diaspora.parse_profile_from_hcard`. The selectors now match Diaspora upcoming federation documentation. ## [0.5.0] - 2016-09-05 diff --git a/federation/utils/diaspora.py b/federation/utils/diaspora.py index 1c3b059..c9f306d 100644 --- a/federation/utils/diaspora.py +++ b/federation/utils/diaspora.py @@ -105,16 +105,16 @@ def parse_profile_from_hcard(hcard): doc = html.fromstring(hcard) domain = urlparse(_get_element_attr_or_none(doc, "a#pod_location", "href")).netloc profile = Profile( - name=_get_element_text_or_none(doc, "dl.entity_full_name span.fn"), + name=_get_element_text_or_none(doc, ".fn"), image_urls={ - "small": _get_element_attr_or_none(doc, "dl.entity_photo_small img.photo", "src"), - "medium": _get_element_attr_or_none(doc, "dl.entity_photo_medium img.photo", "src"), - "large": _get_element_attr_or_none(doc, "dl.entity_photo img.photo", "src"), + "small": _get_element_attr_or_none(doc, ".entity_photo_small .photo", "src"), + "medium": _get_element_attr_or_none(doc, ".entity_photo_medium .photo", "src"), + "large": _get_element_attr_or_none(doc, ".entity_photo .photo", "src"), }, - public=True if _get_element_text_or_none(doc, "dl.entity_searchable span.searchable") == "true" else False, - handle="%s@%s" % (_get_element_text_or_none(doc, "dl.entity_nickname span.nickname"), domain), - guid=_get_element_text_or_none(doc, "dl.entity_uid span.uid"), - public_key=_get_element_text_or_none(doc, "dl.entity_key pre.key"), + public=True if _get_element_text_or_none(doc, ".searchable") == "true" else False, + handle="%s@%s" % (_get_element_text_or_none(doc, ".nickname"), domain), + guid=_get_element_text_or_none(doc, ".uid"), + public_key=_get_element_text_or_none(doc, ".key"), ) return profile