soup-sdk 0.3.2

채팅 이벤트 수신 SDK
Documentation
use thiserror::Error;

#[derive(Debug, Error)]
pub enum Error {
    #[error("HTTP 상태 오류: {status} ({url})")]
    HttpStatus {
        status: reqwest::StatusCode,
        url: String,
    },

    #[error("전송 오류: {0}")]
    Transport(#[from] reqwest::Error),

    #[error("WebSocket 연결 실패: {0}")]
    ConnectionFailed(String),

    #[error("WebSocket 통신 오류: {0}")]
    WebSocket(#[source] Box<tokio_tungstenite::tungstenite::Error>),

    #[error("응답 디코딩 실패: {0}")]
    Decode(String),

    #[error("파싱 실패: {0}")]
    Parse(String),

    #[error("프로토콜 오류: {0}")]
    Protocol(String),

    #[error("내부 채널이 닫혔습니다: {0}")]
    ChannelClosed(String),

    #[error("방송이 꺼져있습니다.")]
    StreamOffline,

    #[error("잘못된 URL 형식: {0}")]
    URLParse(#[from] url::ParseError),

    #[error("아직 구현되지 않은 기능입니다.")]
    NotImplemented,

    #[error("이미 시작된 연결입니다.")]
    AlreadyStarted,
}

pub type Result<T> = std::result::Result<T, Error>;

impl From<tokio_tungstenite::tungstenite::Error> for Error {
    fn from(error: tokio_tungstenite::tungstenite::Error) -> Self {
        Self::WebSocket(Box::new(error))
    }
}