///|
/// Error type for Telegram Bot API operations, covering HTTP, API, UTF-8,
/// JSON, and parse failures.
pub(all) suberror TelegramError {
HttpError(code~ : Int, body~ : String)
ApiError(code~ : Int, description~ : String)
InvalidUtf8(@encoding/utf8.Malformed)
InvalidJson(@json.ParseError)
InvalidResponse(Json)
InvalidResult(Json, @json.JsonDecodeError)
ParseError(message~ : String)
}
///|
pub impl Show for TelegramError with output(
self : TelegramError,
logger : &Logger,
) -> Unit {
match self {
TelegramError::HttpError(code~, body~) =>
logger.write_string("HttpError(code=\{code}, body=\{body})")
TelegramError::ApiError(code~, description~) =>
logger.write_string("ApiError(code=\{code}, description=\{description})")
TelegramError::InvalidUtf8(@encoding/utf8.Malformed(error)) =>
logger.write_string(
"InvalidUtf8(error=@encoding/utf8.Malformed(\{error}))",
)
TelegramError::InvalidJson(error) =>
logger.write_string("InvalidJson(error=\{error})")
TelegramError::InvalidResponse(json) =>
logger.write_string("InvalidResponse(json=\{json.stringify()})")
TelegramError::InvalidResult(json, error) =>
logger.write_string(
"InvalidResult(json=\{json.stringify()}, error=\{error})",
)
TelegramError::ParseError(message~) =>
logger.write_string("ParseError(message=\{message})")
}
}