mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-09 03:54:56 -04:00
Refactor arguments of try_unbind_threepid(_with_id_server)
from dict to separate args (#15053)
This commit is contained in:
parent
c10e131250
commit
bdccfd2477
5 changed files with 28 additions and 39 deletions
|
@ -219,28 +219,31 @@ class IdentityHandler:
|
|||
data = json_decoder.decode(e.msg) # XXX WAT?
|
||||
return data
|
||||
|
||||
async def try_unbind_threepid(self, mxid: str, threepid: dict) -> bool:
|
||||
"""Attempt to remove a 3PID from an identity server, or if one is not provided, all
|
||||
identity servers we're aware the binding is present on
|
||||
async def try_unbind_threepid(
|
||||
self, mxid: str, medium: str, address: str, id_server: Optional[str]
|
||||
) -> bool:
|
||||
"""Attempt to remove a 3PID from one or more identity servers.
|
||||
|
||||
Args:
|
||||
mxid: Matrix user ID of binding to be removed
|
||||
threepid: Dict with medium & address of binding to be
|
||||
removed, and an optional id_server.
|
||||
medium: The medium of the third-party ID.
|
||||
address: The address of the third-party ID.
|
||||
id_server: An identity server to attempt to unbind from. If None,
|
||||
attempt to remove the association from all identity servers
|
||||
known to potentially have it.
|
||||
|
||||
Raises:
|
||||
SynapseError: If we failed to contact the identity server
|
||||
SynapseError: If we failed to contact one or more identity servers.
|
||||
|
||||
Returns:
|
||||
True on success, otherwise False if the identity
|
||||
server doesn't support unbinding (or no identity server found to
|
||||
contact).
|
||||
True on success, otherwise False if the identity server doesn't
|
||||
support unbinding (or no identity server to contact was found).
|
||||
"""
|
||||
if threepid.get("id_server"):
|
||||
id_servers = [threepid["id_server"]]
|
||||
if id_server:
|
||||
id_servers = [id_server]
|
||||
else:
|
||||
id_servers = await self.store.get_id_servers_user_bound(
|
||||
user_id=mxid, medium=threepid["medium"], address=threepid["address"]
|
||||
mxid, medium, address
|
||||
)
|
||||
|
||||
# We don't know where to unbind, so we don't have a choice but to return
|
||||
|
@ -249,20 +252,21 @@ class IdentityHandler:
|
|||
|
||||
changed = True
|
||||
for id_server in id_servers:
|
||||
changed &= await self.try_unbind_threepid_with_id_server(
|
||||
mxid, threepid, id_server
|
||||
changed &= await self._try_unbind_threepid_with_id_server(
|
||||
mxid, medium, address, id_server
|
||||
)
|
||||
|
||||
return changed
|
||||
|
||||
async def try_unbind_threepid_with_id_server(
|
||||
self, mxid: str, threepid: dict, id_server: str
|
||||
async def _try_unbind_threepid_with_id_server(
|
||||
self, mxid: str, medium: str, address: str, id_server: str
|
||||
) -> bool:
|
||||
"""Removes a binding from an identity server
|
||||
|
||||
Args:
|
||||
mxid: Matrix user ID of binding to be removed
|
||||
threepid: Dict with medium & address of binding to be removed
|
||||
medium: The medium of the third-party ID
|
||||
address: The address of the third-party ID
|
||||
id_server: Identity server to unbind from
|
||||
|
||||
Raises:
|
||||
|
@ -286,7 +290,7 @@ class IdentityHandler:
|
|||
|
||||
content = {
|
||||
"mxid": mxid,
|
||||
"threepid": {"medium": threepid["medium"], "address": threepid["address"]},
|
||||
"threepid": {"medium": medium, "address": address},
|
||||
}
|
||||
|
||||
# we abuse the federation http client to sign the request, but we have to send it
|
||||
|
@ -319,12 +323,7 @@ class IdentityHandler:
|
|||
except RequestTimedOutError:
|
||||
raise SynapseError(500, "Timed out contacting identity server")
|
||||
|
||||
await self.store.remove_user_bound_threepid(
|
||||
user_id=mxid,
|
||||
medium=threepid["medium"],
|
||||
address=threepid["address"],
|
||||
id_server=id_server,
|
||||
)
|
||||
await self.store.remove_user_bound_threepid(mxid, medium, address, id_server)
|
||||
|
||||
return changed
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue