kopia lustrzana https://gitlab.com/jaywink/federation
Make retrieve_remote_profile accept an ID
rodzic
d2cba74a9d
commit
4c24e57bff
|
@ -1,5 +1,9 @@
|
|||
import importlib
|
||||
import logging
|
||||
from typing import Optional
|
||||
|
||||
from federation.entities.base import Profile
|
||||
from federation.utils.diaspora import parse_profile_diaspora_id
|
||||
|
||||
logger = logging.getLogger("federation")
|
||||
|
||||
|
@ -19,19 +23,16 @@ def retrieve_remote_content(id, sender_key_fetcher=None):
|
|||
return utils.retrieve_and_parse_content(id, sender_key_fetcher=sender_key_fetcher)
|
||||
|
||||
|
||||
def retrieve_remote_profile(handle):
|
||||
def retrieve_remote_profile(id: str) -> Optional[Profile]:
|
||||
"""High level retrieve profile method.
|
||||
|
||||
Retrieve the profile from a remote location, using either the given protocol or by checking each
|
||||
protocol until a user can be constructed from the remote documents.
|
||||
|
||||
Currently, due to no other protocols supported, always use the Diaspora protocol.
|
||||
|
||||
:param handle: The profile handle in format username@domain.tld
|
||||
:returns: ``federation.entities.base.Profile`` or ``None``
|
||||
"""
|
||||
# TODO add support for AP
|
||||
protocol_name = "diaspora"
|
||||
utils = importlib.import_module("federation.utils.%s" % protocol_name)
|
||||
if not handle.islower():
|
||||
logger.warning("retrieve_remote_profile - Handle is not lower case! Will use lower case version to continue.")
|
||||
return utils.retrieve_and_parse_profile(handle.lower())
|
||||
handle, _guid = parse_profile_diaspora_id(id.lower())
|
||||
return utils.retrieve_and_parse_profile(handle)
|
||||
|
|
|
@ -19,12 +19,12 @@ class TestRetrieveRemoteProfile:
|
|||
def test_calls_diaspora_retrieve_and_parse_profile(self, mock_import):
|
||||
mock_retrieve = Mock()
|
||||
mock_import.return_value = mock_retrieve
|
||||
retrieve_remote_profile("foo@bar")
|
||||
mock_retrieve.retrieve_and_parse_profile.assert_called_once_with("foo@bar")
|
||||
retrieve_remote_profile("diaspora://user@example.com/profile/1234")
|
||||
mock_retrieve.retrieve_and_parse_profile.assert_called_once_with("user@example.com")
|
||||
|
||||
@patch("federation.fetchers.importlib.import_module")
|
||||
def test_calls_diaspora_retrieve_and_parse_profile__lower_cases_handle_when_needed(self, mock_import):
|
||||
mock_retrieve = Mock()
|
||||
mock_import.return_value = mock_retrieve
|
||||
retrieve_remote_profile("foo@Bar")
|
||||
mock_retrieve.retrieve_and_parse_profile.assert_called_once_with("foo@bar")
|
||||
retrieve_remote_profile("diaspora://uSer@ExamPle.com/profile/1234")
|
||||
mock_retrieve.retrieve_and_parse_profile.assert_called_once_with("user@example.com")
|
||||
|
|
Ładowanie…
Reference in New Issue