Skip to content

Commit bb1b5d6

Browse files
committed
Allow to register a listener event when log in
1 parent bbde4a7 commit bb1b5d6

File tree

1 file changed

+9
-14
lines changed

1 file changed

+9
-14
lines changed

pyhoma/client.py

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ def __init__(self, username: str, password: str, api_url: str = API_URL) -> None
3838
self.api_url = api_url
3939

4040
self.devices: List[Device] = []
41-
self.__roles = None
4241
self.event_listener_id: Optional[str] = None
4342

4443
self.session = aiohttp.ClientSession()
@@ -57,24 +56,20 @@ async def __aexit__(
5756
async def close(self) -> None:
5857
"""Close the session."""
5958
if self.event_listener_id:
60-
await self.unregister_event_listener(self.event_listener_id)
59+
await self.unregister_event_listener()
6160

6261
await self.session.close()
6362

64-
async def login(self) -> bool:
63+
async def login(self, register: Optional[bool] = True) -> bool:
6564
"""
6665
Authenticate and create an API session allowing access to the other operations.
6766
Caller must provide one of [userId+userPassword, userId+ssoToken, accessToken, jwt]
6867
"""
6968
payload = {"userId": self.username, "userPassword": self.password}
7069
response = await self.__post("login", data=payload)
71-
72-
if response.get("success"):
73-
self.__roles = response.get("roles")
74-
75-
return True
76-
77-
return False
70+
if register:
71+
await self.register_event_listener()
72+
return response.get("success")
7873

7974
async def get_devices(self, refresh: bool = False) -> List[Device]:
8075
"""
@@ -116,24 +111,24 @@ async def register_event_listener(self) -> str:
116111

117112
return listener_id
118113

119-
async def fetch_event_listener(self, listener_id: str) -> List[Event]:
114+
async def fetch_event_listener(self) -> List[Event]:
120115
"""
121116
Fetch new events from a registered event listener. Fetched events are removed
122117
from the listener buffer. Return an empty response if no event is available.
123118
Per-session rate-limit : 1 calls per 1 SECONDS period for this particular
124119
operation (polling)
125120
"""
126-
response = await self.__post(f"events/{listener_id}/fetch")
121+
response = await self.__post(f"events/{self.event_listener_id}/fetch")
127122
events = [Event(**e) for e in humps.decamelize(response)]
128123

129124
return events
130125

131-
async def unregister_event_listener(self, listener_id: str) -> None:
126+
async def unregister_event_listener(self) -> None:
132127
"""
133128
Unregister an event listener.
134129
API response status is always 200, even on unknown listener ids.
135130
"""
136-
await self.__post(f"events/{listener_id}/unregister")
131+
await self.__post(f"events/{self.event_listener_id}/unregister")
137132
self.event_listener_id = None
138133

139134
async def get_current_execution(self, exec_id: str) -> Execution:

0 commit comments

Comments
 (0)