102 lines
3.7 KiB
Python
102 lines
3.7 KiB
Python
|
from pyrmv.errors.api_errors import ApiAuthError, ApiFormatError, ApiParamError, ApiQuotaError, ApiTooManyRequests
|
||
|
from pyrmv.errors.int_errors import IntError, IntGatewayError, IntTimeoutError
|
||
|
from pyrmv.errors.ps_errors import PsIncorrectParamError
|
||
|
from pyrmv.errors.sot_errors import SotAllTrainsFilteredError, SotAlreadyArrivedError, SotCancelledError, SotNotStartedError, SotStayOnTripError
|
||
|
from pyrmv.errors.svc_errors import SvcContextError, SvcDatetimeError, SvcDatetimePeriodError, SvcLocationArrivalError, SvcLocationDepartureError, SvcLocationEqualError, SvcLocationError, SvcLocationNearError, SvcLocationViaError, SvcNoMatchError, SvcNoResultError, SvcProductError, SvcSearchError
|
||
|
from pyrmv.errors.unknown_error import UnknownError
|
||
|
|
||
|
def find_exception(data: dict):
|
||
|
"""Scan returned dict for errorCode from RMV.
|
||
|
Raises different exceptions if errorCode is not None.
|
||
|
|
||
|
### Args:
|
||
|
* data (dict): Response from RMV as a dict.
|
||
|
|
||
|
### Raises:
|
||
|
* Any: Formatted as "errorCode -> errorText" if ApiParamError and UnknownError or as a single massage for others.
|
||
|
"""
|
||
|
if "errorCode" in data:
|
||
|
|
||
|
if data["errorCode"] == "API_AUTH":
|
||
|
raise ApiAuthError()
|
||
|
|
||
|
elif data["errorCode"] == "API_QUOTA":
|
||
|
raise ApiQuotaError()
|
||
|
|
||
|
elif data["errorCode"] == "API_TOO_MANY_REQUESTS":
|
||
|
raise ApiTooManyRequests()
|
||
|
|
||
|
elif data["errorCode"] == "API_PARAM":
|
||
|
raise ApiParamError(errorCode=data["errorCode"], errorText=data["errorText"])
|
||
|
|
||
|
elif data["errorCode"] == "API_FORMAT":
|
||
|
raise ApiFormatError()
|
||
|
|
||
|
elif data["errorCode"] == "SVC_LOC":
|
||
|
raise SvcLocationError()
|
||
|
|
||
|
elif data["errorCode"] == "SVC_LOC_ARR":
|
||
|
raise SvcLocationArrivalError()
|
||
|
|
||
|
elif data["errorCode"] == "SVC_LOC_DEP":
|
||
|
raise SvcLocationDepartureError()
|
||
|
|
||
|
elif data["errorCode"] == "SVC_LOC_VIA":
|
||
|
raise SvcLocationViaError()
|
||
|
|
||
|
elif data["errorCode"] == "SVC_LOC_EQUAL":
|
||
|
raise SvcLocationEqualError()
|
||
|
|
||
|
elif data["errorCode"] == "SVC_LOC_NEAR":
|
||
|
raise SvcLocationNearError()
|
||
|
|
||
|
elif data["errorCode"] == "SVC_DATATIME":
|
||
|
raise SvcDatetimeError()
|
||
|
|
||
|
elif data["errorCode"] == "SVC_DATATIME_PERIOD":
|
||
|
raise SvcDatetimePeriodError()
|
||
|
|
||
|
elif data["errorCode"] == "SVC_PROD":
|
||
|
raise SvcProductError()
|
||
|
|
||
|
elif data["errorCode"] == "SVC_CTX":
|
||
|
raise SvcContextError()
|
||
|
|
||
|
elif data["errorCode"] == "SVC_NO_RESULT":
|
||
|
raise SvcNoResultError()
|
||
|
|
||
|
elif data["errorCode"] == "SVC_FAILED_SEARCH":
|
||
|
raise SvcSearchError()
|
||
|
|
||
|
elif data["errorCode"] == "SVC_NO_MATCH":
|
||
|
raise SvcNoMatchError()
|
||
|
|
||
|
elif data["errorCode"] == "INT_ERR":
|
||
|
raise IntError()
|
||
|
|
||
|
elif data["errorCode"] == "INT_GATEWAY":
|
||
|
raise IntGatewayError()
|
||
|
|
||
|
elif data["errorCode"] == "INT_TIMEOUT":
|
||
|
raise IntTimeoutError()
|
||
|
|
||
|
elif data["errorCode"] == "SOT_AT_DEST":
|
||
|
raise SotAlreadyArrivedError()
|
||
|
|
||
|
elif data["errorCode"] == "SOT_BEFORE_START":
|
||
|
raise SotNotStartedError()
|
||
|
|
||
|
elif data["errorCode"] == "SOT_CANCELLED":
|
||
|
raise SotCancelledError()
|
||
|
|
||
|
elif data["errorCode"] == "SOT_ALL_TRAINS_FILTERED":
|
||
|
raise SotAllTrainsFilteredError()
|
||
|
|
||
|
elif data["errorCode"] == "SOT_STAY_IN_CURRENT_CONNECTION":
|
||
|
raise SotStayOnTripError()
|
||
|
|
||
|
elif data["errorCode"] == "PARTIALSEARCH_INCORRECT_PARAM":
|
||
|
raise PsIncorrectParamError()
|
||
|
|
||
|
else:
|
||
|
raise UnknownError(errorCode=data["errorCode"], errorText=data["errorText"])
|