from typing import Optional from typing import Any class KanidmQueryError(Exception): """Error occurred during kanidm query""" def __init__( self, error_text: Optional[Any] = None, endpoint: Optional[str] = None, method: Optional[str] = None, ) -> None: self.error_text = str(error_text) self.endpoint = endpoint self.method = method def get_error_message(self) -> str: message = "An error occurred during the Kanidm query." if self.method: message += f" Method: {self.method}" if self.endpoint: message += f" Endpoint: {self.endpoint}" if self.error_text: message += f" Error: {self.error_text}" return message class KanidmReturnEmptyResponse(Exception): """Kanidm returned a blank response""" @staticmethod def get_error_message() -> str: return "Kanidm returned an empty response." class KanidmReturnUnknownResponseType(Exception): """Kanidm returned a blank response""" def __init__(self, response_data: Optional[Any] = None) -> None: self.response_data = str(response_data) def get_error_message(self) -> str: return ( f"Kanidm returned unknown type response. Response: {self.response_data}" if self.response_data else "Kanidm returned unknown type response." ) class KanidmDidNotReturnAdminPassword(Exception): """Kanidm didn't return the admin password""" @staticmethod def get_error_message() -> str: return "Kanidm didn't return the admin password." class KanidmCliSubprocessError(Exception): """An error occurred when using Kanidm cli""" def __init__(self, error: Optional[str] = None) -> None: self.error = error def get_error_message(self) -> str: return ( f"An error occurred when using Kanidm cli. Error: {self.error}" if self.error else "An error occurred when using Kanidm cli" ) class FailedToGetValidKanidmToken(Exception): """Kanidm failed to return a valid token""" @staticmethod def get_error_message() -> str: return "Failed to get valid Kanidm token."