Check if an email is subscribed in a list.

This commit is contained in:
Yohann D'ANELLO 2020-10-08 18:27:33 +02:00
parent c083cc02ea
commit d1419f91f4
1 changed files with 14 additions and 3 deletions

View File

@ -4,9 +4,9 @@ from zeep.client import Client as ZeepClient, Settings as ZeepSettings
class Client: class Client:
def __init__(self, sympa_url: str): def __init__(self, sympa_url: str):
self.sympa_url = sympa_url self.sympa_url = sympa_url
self.zeep = ZeepClient(sympa_url + "/wsgl", settings=ZeepSettings(strict=False)) self.zeep = ZeepClient(sympa_url + "/wsdl", settings=ZeepSettings(strict=False))
def login(self, email, password): def login(self, email: str, password: str) -> None:
""" """
Login into the API. Set a cookie for future connexions. Login into the API. Set a cookie for future connexions.
""" """
@ -19,10 +19,21 @@ class Client:
raise Exception("Unknown error: given cookie is invalid") raise Exception("Unknown error: given cookie is invalid")
print("Successfully authenticated!") print("Successfully authenticated!")
def checkCookie(self): def checkCookie(self) -> str:
""" """
From the current cookie, retrieve the email address. From the current cookie, retrieve the email address.
""" """
result = self.zeep.service.checkCookie() result = self.zeep.service.checkCookie()
element = result._raw_elements[0] element = result._raw_elements[0]
return element.text return element.text
def amI(self, mailing_list: str, function: str, email: str) -> bool:
"""
Check if the given `email` is a member of type `function` in the `mailing_list`.
The function parameter is one between subscriber, editor or owner.
"""
if function not in ["subscriber", "editor", "owner"]:
raise ValueError("function of a mailing list member must be subscriber, editor or owner.")
result = self.zeep.service.amI(mailing_list, function, email)
element = result._raw_elements[0]
return element.text == "true"