126 lines
7.2 KiB
Python
126 lines
7.2 KiB
Python
# matrix-appservice-kakaotalk - A Matrix-KakaoTalk puppeting bridge.
|
|
# Copyright (C) 2022 Tulir Asokan, Andrew Ferrazzutti
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Affero General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
"""Internal helpers for error handling."""
|
|
from __future__ import annotations
|
|
|
|
from typing import Dict, NoReturn, Type, Union
|
|
|
|
from .errors import (
|
|
CommandException,
|
|
AnotherLogonDetected,
|
|
AuthenticationRequired,
|
|
DeviceVerificationRequired,
|
|
IncorrectPasscode,
|
|
IncorrectPassword,
|
|
InvalidAccessToken,
|
|
)
|
|
from ..types.request import RootCommandResult, KnownDataStatusCode
|
|
from ..types.api.auth_api_client import KnownAuthStatusCode
|
|
|
|
|
|
def raise_unsuccessful_response(resp: RootCommandResult) -> NoReturn:
|
|
raise _error_code_class_map.get(resp.status, CommandException)(resp)
|
|
|
|
|
|
_error_code_class_map: Dict[Union[KnownAuthStatusCode, KnownDataStatusCode, int], Type[CommandException]] = {
|
|
#KnownAuthStatusCode.INVALID_PHONE_NUMBER: "Invalid phone number",
|
|
#KnownAuthStatusCode.SUCCESS_WITH_ACCOUNT: "Success",
|
|
#KnownAuthStatusCode.SUCCESS_WITH_DEVICE_CHANGED: "Success (device changed)",
|
|
KnownAuthStatusCode.MISMATCH_PASSWORD: IncorrectPassword,
|
|
#KnownAuthStatusCode.EXCEED_LOGIN_LIMIT: "Login limit exceeded",
|
|
#KnownAuthStatusCode.MISMATCH_PHONE_NUMBER: "Phone number mismatch",
|
|
#KnownAuthStatusCode.EXCEED_PHONE_NUMBER_CHECK_LIMIT: "Phone number limit exceeded",
|
|
#KnownAuthStatusCode.NOT_EXIST_ACCOUNT: "Account does not exist",
|
|
#KnownAuthStatusCode.NEED_CHECK_PHONE_NUMBER: "Must check phone number",
|
|
#KnownAuthStatusCode.NEED_CHECK_QUIZ: "Must check quiz",
|
|
#KnownAuthStatusCode.DORMANT_ACCOUNT: "Dormant account",
|
|
#KnownAuthStatusCode.RESTRICTED_ACCOUNT: "Restricted account",
|
|
KnownAuthStatusCode.LOGIN_FAILED: IncorrectPassword,
|
|
#KnownAuthStatusCode.NOT_VERIFIED_EMAIL: "Unverified email address",
|
|
#KnownAuthStatusCode.MOBILE_UNREGISTERED: "Mobile device not registered",
|
|
#KnownAuthStatusCode.UNKNOWN_PHONE_NUMBER: "Unknown phone number",
|
|
#KnownAuthStatusCode.SUCCESS_SAME_USER: "Success (same user)",
|
|
#KnownAuthStatusCode.SUCCESS_SAME_USER_BY_MIGRATION: "Success (same user by migration)",
|
|
#KnownAuthStatusCode.TOO_MANY_REQUEST_A_DAY: "Too many requests a day",
|
|
#KnownAuthStatusCode.TOO_MANY_REQUEST_AT_A_TIME: " Too many requests at a time",
|
|
KnownAuthStatusCode.MISMATCH_PASSCODE: IncorrectPasscode,
|
|
#KnownAuthStatusCode.EXCEED_DAILY_REQUEST_LIMIT: "Daily request limit exceeded",
|
|
#KnownAuthStatusCode.EXCEED_DAILY_REQUEST_LIMIT_VOICECALL: "Daily voicecall limit exceeded",
|
|
#KnownAuthStatusCode.EXCEED_DAILY_REQUEST_LIMIT_WITHOUT_TOKEN: "Daily tokenless request limit exceeded",
|
|
KnownAuthStatusCode.DEVICE_NOT_REGISTERED: DeviceVerificationRequired,
|
|
KnownAuthStatusCode.ANOTHER_LOGON: AnotherLogonDetected,
|
|
#KnownAuthStatusCode.DEVICE_REGISTER_FAILED: "Device registration failed",
|
|
#KnownAuthStatusCode.INVALID_DEVICE_REGISTER: "Invalid device",
|
|
KnownAuthStatusCode.INVALID_PASSCODE: IncorrectPasscode,
|
|
#KnownAuthStatusCode.PASSCODE_REQUEST_FAILED: "Passcode request failed",
|
|
#KnownAuthStatusCode.NEED_TERMS_AGREE: "Must agree to terms",
|
|
#KnownAuthStatusCode.DENIED_DEVICE_MODEL: "Denied device model",
|
|
#KnownAuthStatusCode.RESET_STEP: "Reset step",
|
|
#KnownAuthStatusCode.NEED_PROTECTOR_AGREE: "Must agree to protector terms",
|
|
#KnownAuthStatusCode.ACCOUNT_RESTRICTED: "Account restricted",
|
|
##KnownAuthStatusCode.INVALID_STAGE_ERROR: "Same as KnownAuthStatusCode.AUTH_REQUIRED",
|
|
#KnownAuthStatusCode.UPGRADE_REQUIRED: "Upgrade required",
|
|
#KnownAuthStatusCode.VOICE_CALL_ONLY: "Voice call only",
|
|
#KnownAuthStatusCode.ACCESSIBILITY_ARS_ONLY: "Accessibility only",
|
|
#KnownAuthStatusCode.MIGRATION_FAILURE: "Migration failure",
|
|
#KnownAuthStatusCode.INVAILD_TOKEN: "Invalid token",
|
|
#KnownAuthStatusCode.UNDEFINED: "Undefined error",
|
|
|
|
#KnownDataStatusCode.SUCCESS: "Success",
|
|
#KnownDataStatusCode.INVALID_USER: "Invalid user",
|
|
#KnownDataStatusCode.CLIENT_ERROR: "Client error",
|
|
#KnownDataStatusCode.NOT_LOGON: "Not logged in",
|
|
#KnownDataStatusCode.INVALID_METHOD: "Invalid method",
|
|
#KnownDataStatusCode.INVALID_PARAMETER: "Invalid parameter",
|
|
#KnownDataStatusCode.INVALID_BODY: "Invalid body",
|
|
#KnownDataStatusCode.INVALID_HEADER: "Invalid header",
|
|
#KnownDataStatusCode.UNAUTHORIZED_CHAT_DELETE: "Unauthorized chat deletion",
|
|
#KnownDataStatusCode.MEDIA_SERVER_ERROR: "Media server error",
|
|
#KnownDataStatusCode.CHAT_SPAM_LIMIT: "Chat spam limit exceeded",
|
|
#KnownDataStatusCode.RESTRICTED_APP: "Restricted app",
|
|
#KnownDataStatusCode.LOGINLIST_CHATLIST_FAILED: "Login chat list failed",
|
|
#KnownDataStatusCode.MEDIA_NOT_FOUND: "Media not found",
|
|
#KnownDataStatusCode.MEDIA_THUMB_GEN_FAILED: "Could not generate media thumbnail",
|
|
#KnownDataStatusCode.UNSUPPORTED: "Unsupported",
|
|
#KnownDataStatusCode.PARTIAL: "Parial",
|
|
#KnownDataStatusCode.LINK_JOIN_TPS_EXCEEDED: "Link join TPS exceeded",
|
|
#KnownDataStatusCode.CHAT_SEND_RESTRICTED: "Chat send restricted",
|
|
#KnownDataStatusCode.CHANNEL_CREATE_TEMP_RESTRICTED: "Channel creation temporarily restricted",
|
|
#KnownDataStatusCode.CHANNEL_CREATE_RESTRICTED: "Channel creation restricted",
|
|
#KnownDataStatusCode.OPENLINK_UNAVAILABLE: "Openlink unavailable",
|
|
#KnownDataStatusCode.INVITE_COUNT_LIMITED: "Invite count limited",
|
|
#KnownDataStatusCode.OPENLINK_CREATE_RESTRICTED: "Openlink creation restricted",
|
|
#KnownDataStatusCode.INVALID_CHANNEL: "Invalid channel",
|
|
#KnownDataStatusCode.CHAT_BLOCKED_BY_FRIEND: "Blocked by friend",
|
|
#KnownDataStatusCode.NOT_CHATABLE_USER: "Non-chattable user",
|
|
#KnownDataStatusCode.GAME_MESSAGE_BLOCKED: "Game message blocked",
|
|
#KnownDataStatusCode.BLOCKED_IP: "Blocked IP",
|
|
#KnownDataStatusCode.BACKGROUND_LOGIN_BLOCKED: "Background login blocked",
|
|
#KnownDataStatusCode.OPERATION_DENIED: "Operation denied",
|
|
#KnownDataStatusCode.CHANNEL_USER_LIMITED: "Channel user limited",
|
|
#KnownDataStatusCode.TEMP_RESTRICTED: "Temporarily restricted",
|
|
#KnownDataStatusCode.WRITE_WHILE_BLOCKED: "Write while blocked",
|
|
#KnownDataStatusCode.OPENCHAT_REJOIN_REQUIRED: "Openchat rejoin required",
|
|
#KnownDataStatusCode.OPENCHAT_TIME_RESTRICTED: "Openchat time restricted",
|
|
KnownDataStatusCode.INVALID_ACCESS_TOKEN: InvalidAccessToken,
|
|
##KnownDataStatusCode.BLOCKED_ACCOUNT: "Same as KnownAuthStatusCode.ACCOUNT_RESTRICTED"
|
|
KnownDataStatusCode.AUTH_REQUIRED: AuthenticationRequired,
|
|
##KnownDataStatusCode.UPDATE_REQUIRED = "Same as KnownAuthStatusCode.UPGRADE_REQUIRED"
|
|
#KnownDataStatusCode.SERVER_UNDER_MAINTENANCE: "Server under maintenance",
|
|
|
|
401: InvalidAccessToken,
|
|
}
|