vkapi2/
error.rs

1use serde::Deserialize;
2use std::fmt;
3
4#[derive(Debug, Deserialize, Clone)]
5pub struct VkError {
6    pub error: Error,
7}
8
9#[derive(Debug, Deserialize, Clone)]
10pub struct Error {
11    #[serde(alias = "error_code")]
12    pub code: i32,
13    #[serde(alias = "error_msg")]
14    pub message: String,
15    pub request_params: Vec<RequestParam>,
16}
17
18#[derive(Debug, Deserialize, Clone)]
19pub struct RequestParam {
20    pub key: String,
21    pub value: String,
22}
23
24#[derive(Debug)]
25pub enum VkApiError {
26    ReqwestError(reqwest::Error),
27    SerdeJsonError(serde_json::Error),
28    VkError(VkError),
29    InternalError(String),
30}
31
32impl From<reqwest::Error> for VkApiError {
33    fn from(error: reqwest::Error) -> Self {
34        VkApiError::ReqwestError(error)
35    }
36}
37
38impl From<serde_json::Error> for VkApiError {
39    fn from(error: serde_json::Error) -> Self {
40        VkApiError::SerdeJsonError(error)
41    }
42}
43
44impl fmt::Display for VkApiError {
45    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
46        match self {
47            VkApiError::ReqwestError(error) => write!(f, "Reqwest Error: {}", error),
48            VkApiError::SerdeJsonError(error) => write!(f, "Serde JSON Error: {}", error),
49            VkApiError::VkError(response) => write!(f, "VK Error: {:?}", response),
50            VkApiError::InternalError(response) => write!(f, "Internal Error: {:?}", response),
51        }
52    }
53}
54
55impl std::error::Error for VkApiError {}