srt_mobile_api.errors
¶
예외 계층과 msgCd → 예외 분류.
계층::
SrtApiError
├─ SrtTransportError HTTP 실패
├─ SrtProtocolError 응답 모양 불일치 / 안전 가드 거절
├─ SrtAuthError 인증·세션
│ ├─ SrtSessionExpiredError
│ └─ SrtIpBlockedError
├─ SrtAppError 앱 수준 실패 (strResult=FAIL)
│ ├─ SrtNoResultsError
│ │ └─ SrtNoDirectTrainError
│ ├─ SrtInvalidRequestError
│ └─ SrtSeatUnavailableError
├─ SrtMutationNotAllowedError consent 게이트 거절
└─ SrtNetFunnelError 대기열
├─ SrtNetFunnelKeyError
└─ SrtQueueRejectedError
INVALID_REQUEST_CODES
module-attribute
¶
SrtApiError
¶
Bases: Exception
모든 예외의 뿌리. 메시지는 redact_url 을 거침.
SrtTransportError
¶
SrtProtocolError
¶
SrtAuthError
¶
SrtSessionExpiredError
¶
Bases: SrtAuthError
세션 만료 — 재로그인 후 재시도.
두 신호: (1) 로그인 페이지/리다이렉트 응답, (2) 예약 응답에서 strResult="FAIL" + msgCd="S111" (ara1001l.js:1562-1573). S111이 인증 오류가 되는 것은 예약 응답에서뿐 — 다른 엔드포인트는 SrtAppError.
SrtIpBlockedError
¶
Bases: SrtAuthError
IP 차단 — 재시도 무의미. "Your IP Address Blocked" 평문 응답.
번들 0-hit (인프라 응답). srtgo srt.py:719-720 동일 처리. 대기열 IP 차단(kTsIpBlock 302, SrtQueueRejectedError)과 별개.
SrtAppError
¶
Bases: SrtApiError
서버가 앱 수준 실패 선언 (HTTP 200, strResult="FAIL"). code=msgCd, raw=응답.
SrtNoResultsError
¶
Bases: SrtAppError
조회 결과 없음 — 재시도 아닌 조건 변경 필요.
WRG000000 "조회 결과가 없습니다." / WRT300005 "조회자료가 없습니다." 이 서버는 빈 결과를 strResult=FAIL로 표현한다 (ara1001l.js:206-210).
SrtNoDirectTrainError
¶
SrtInvalidRequestError
¶
SrtSeatUnavailableError
¶
Bases: SrtAppError
좌석 선택 페이지가 오류 껍데기로 도착 — 매진 추정.
code는 messages.js 키 "error001" (msgCd 아님, HTML 응답).
SrtMutationNotAllowedError
¶
SrtNetFunnelError
¶
Bases: SrtApiError
NetFunnel 대기열 단계 실패. code는 3자리 상태값 또는 앱 msgCd.
SrtNetFunnelKeyError
¶
SrtQueueRejectedError
¶
Bases: SrtNetFunnelError
대기열 입장 거부 (kTsBlock 301, kTsIpBlock 302). 재시도 무의미.
엣지 IP 차단(SrtIpBlockedError)과 별개 — 여기는 NetFunnel 대기실.
classify_app_error
¶
msgCd에 대응하는 SrtAppError 하위 클래스 인스턴스를 반환(raise 안 함).
NET000001(SrtNetFunnelKeyError)과 S111(SrtSessionExpiredError)은 여기서 다루지 않음 — 각 호출 지점이 맥락을 알고 처리.