Skip to content

Commit a0e3da3

Browse files
committed
refactor(portaswitch): remove session validation via /ping API call
1 parent 687eef2 commit a0e3da3

1 file changed

Lines changed: 48 additions & 46 deletions

File tree

app/bss/adapters/portaswitch/adapter.py

Lines changed: 48 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -266,18 +266,10 @@ def validate_session(self, access_token: str) -> SessionInfo:
266266
WebTritErrorException: If the token is invalid, expired, or cannot be verified.
267267
"""
268268
try:
269-
self._account_api.decode_and_verify_access_token_expiration(access_token)
270-
session_data: dict = self._account_api.ping(access_token=access_token)
271-
user_id = session_data["user_id"]
269+
data = self._account_api.decode_and_verify_access_token_expiration(access_token)
270+
user_id = str(data["i_account"])
272271

273-
if not user_id:
274-
raise WebTritErrorException(
275-
status_code=401,
276-
error_message="Access token expired",
277-
code="access_token_expired",
278-
)
279-
280-
return SessionInfo(user_id=UserId(str(user_id)), access_token=AccessToken(access_token))
272+
return SessionInfo(user_id=UserId(user_id), access_token=AccessToken(access_token))
281273
except ExpiredSignatureError:
282274
raise WebTritErrorException(
283275
status_code=401,
@@ -290,15 +282,6 @@ def validate_session(self, access_token: str) -> SessionInfo:
290282
error_message="Access token invalid",
291283
code="access_token_invalid",
292284
)
293-
except WebTritErrorException as error:
294-
if extract_fault_code(error) in ("Client.Session.ping.failed_to_process_access_token",):
295-
raise WebTritErrorException(
296-
status_code=401,
297-
error_message="Access token invalid",
298-
code="access_token_invalid",
299-
)
300-
301-
raise error
302285

303286
def refresh_session(self, refresh_token: str) -> SessionInfo:
304287
"""Refreshes the PortaSwitch account session.
@@ -331,7 +314,7 @@ def refresh_session(self, refresh_token: str) -> SessionInfo:
331314
raise WebTritErrorException(
332315
status_code=422,
333316
code="refresh_token_invalid",
334-
error_message=f"Invalid refresh token {refresh_token}",
317+
error_message=f"Invalid refresh token",
335318
)
336319

337320
raise error
@@ -355,9 +338,8 @@ def close_session(self, access_token: str) -> bool:
355338
fault_code = extract_fault_code(error)
356339
if fault_code in ("Client.Session.logout.failed_to_process_access_token",):
357340
raise WebTritErrorException(
358-
status_code=404,
359-
# code = UserAccessErrorCode.session_not_found,
360-
error_message=f"Error closing the session {access_token}",
341+
status_code=422,
342+
error_message=f"Error closing the session",
361343
)
362344

363345
raise error
@@ -396,11 +378,10 @@ def retrieve_user(self, session: SessionInfo, user: UserInfo) -> EndUser:
396378
except WebTritErrorException as error:
397379
fault_code = extract_fault_code(error)
398380
if fault_code in ("Client.Session.check_auth.failed_to_process_access_token",):
399-
# Race condition case, when the session is validated, and then the access_token dies.
400381
raise WebTritErrorException(
401-
status_code=404,
402-
# code = UserAccessErrorCode.session_not_found,
403-
error_message="User not found",
382+
status_code=401,
383+
error_message="Access token expired",
384+
code="access_token_expired",
404385
)
405386

406387
raise error
@@ -544,11 +525,10 @@ def retrieve_contacts(self, session: SessionInfo, user: UserInfo) -> list[Contac
544525
except WebTritErrorException as error:
545526
fault_code = extract_fault_code(error)
546527
if fault_code in ("Client.Session.check_auth.failed_to_process_access_token",):
547-
# Race condition case, when the session is validated, and then the access_token dies.
548528
raise WebTritErrorException(
549-
status_code=404,
550-
# code = UserAccessErrorCode.session_not_found,
551-
error_message="User not found",
529+
status_code=401,
530+
error_message="Access token expired",
531+
code="access_token_expired",
552532
)
553533

554534
raise error
@@ -928,11 +908,10 @@ def retrieve_contacts_v2(
928908
except WebTritErrorException as error:
929909
fault_code = extract_fault_code(error)
930910
if fault_code in ("Client.Session.check_auth.failed_to_process_access_token",):
931-
# Race condition case, when the session is validated, and then the access_token dies.
932911
raise WebTritErrorException(
933-
status_code=404,
934-
# code = UserAccessErrorCode.session_not_found,
935-
error_message="User not found",
912+
status_code=401,
913+
error_message="Access token expired",
914+
code="access_token_expired",
936915
)
937916

938917
raise error
@@ -1001,11 +980,10 @@ def retrieve_calls(
1001980
except WebTritErrorException as error:
1002981
fault_code = extract_fault_code(error)
1003982
if fault_code in ("Client.Session.check_auth.failed_to_process_access_token",):
1004-
# Race condition case, when the session is validated, and then the access_token dies.
1005983
raise WebTritErrorException(
1006-
status_code=404,
1007-
# code = UserNotFoundCode.user_not_found,
1008-
error_message="User not found",
984+
status_code=401,
985+
error_message="Access token expired",
986+
code="access_token_expired",
1009987
)
1010988

1011989
raise error
@@ -1067,7 +1045,11 @@ def retrieve_voicemails(self, session: SessionInfo, user: UserInfo) -> UserVoice
10671045
except WebTritErrorException as error:
10681046
fault_code = extract_fault_code(error)
10691047
if fault_code in ("Client.Session.check_auth.failed_to_process_access_token",):
1070-
raise WebTritErrorException(status_code=404, error_message="User not found")
1048+
raise WebTritErrorException(
1049+
status_code=401,
1050+
error_message="Access token expired",
1051+
code="access_token_expired",
1052+
)
10711053

10721054
raise error
10731055

@@ -1097,7 +1079,11 @@ def retrieve_voicemail_message_details(
10971079
except WebTritErrorException as error:
10981080
fault_code = extract_fault_code(error)
10991081
if fault_code in ("Client.Session.check_auth.failed_to_process_access_token",):
1100-
raise WebTritErrorException(status_code=404, error_message="User not found")
1082+
raise WebTritErrorException(
1083+
status_code=401,
1084+
error_message="Access token expired",
1085+
code="access_token_expired",
1086+
)
11011087

11021088
raise error
11031089

@@ -1130,7 +1116,11 @@ def retrieve_voicemail_message_attachment(
11301116
except WebTritErrorException as error:
11311117
fault_code = extract_fault_code(error)
11321118
if fault_code in ("Client.Session.check_auth.failed_to_process_access_token",):
1133-
raise WebTritErrorException(404, "User not found")
1119+
raise WebTritErrorException(
1120+
401,
1121+
error_message="Access token expired",
1122+
code="access_token_expired",
1123+
)
11341124

11351125
raise error
11361126

@@ -1165,7 +1155,11 @@ def patch_voicemail_message(
11651155
except WebTritErrorException as error:
11661156
fault_code = extract_fault_code(error)
11671157
if fault_code in ("Client.Session.check_auth.failed_to_process_access_token",):
1168-
raise WebTritErrorException(status_code=404, error_message="User not found")
1158+
raise WebTritErrorException(
1159+
401,
1160+
error_message="Access token expired",
1161+
code="access_token_expired",
1162+
)
11691163

11701164
raise error
11711165

@@ -1185,7 +1179,11 @@ def delete_voicemail_message(self, session: SessionInfo, message_id: str) -> Non
11851179
except WebTritErrorException as error:
11861180
fault_code = extract_fault_code(error)
11871181
if fault_code in ("Client.Session.check_auth.failed_to_process_access_token",):
1188-
raise WebTritErrorException(status_code=404, error_message="User not found")
1182+
raise WebTritErrorException(
1183+
401,
1184+
error_message="Access token expired",
1185+
code="access_token_expired",
1186+
)
11891187

11901188
raise error
11911189

@@ -1247,7 +1245,11 @@ def signup(self, user_data, tenant_id: str = None) -> SessionResponse:
12471245
)
12481246
except WebTritErrorException as error:
12491247
if extract_fault_code(error) == "Client.Session.check_auth.failed_to_process_access_token":
1250-
raise WebTritErrorException(status_code=404, error_message="User not found")
1248+
raise WebTritErrorException(
1249+
401,
1250+
error_message="Access token expired",
1251+
code="access_token_expired",
1252+
)
12511253

12521254
raise error
12531255

0 commit comments

Comments
 (0)