tiktokapi_v2/responses/
error.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashSet;
3
4#[derive(Serialize, Deserialize, Debug, Clone, Default)]
5pub struct Error {
6 #[serde(skip_serializing_if = "Option::is_none")]
7 pub code: Option<Code>,
8 #[serde(skip_serializing_if = "Option::is_none")]
9 pub message: Option<String>,
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub log_id: Option<String>,
12 #[serde(flatten)]
13 pub extra: std::collections::HashMap<String, serde_json::Value>,
14}
15
16impl Error {
17 pub fn is_empty_extra(&self) -> bool {
18 let res = self.extra.is_empty();
19 if !res {
20 println!("Error {:?}", self.extra);
21 }
22 res
23 }
24}
25
26#[derive(Serialize, Deserialize, Debug, Clone)]
27pub enum Code {
28 #[serde(rename = "ok")]
29 Ok,
30 #[serde(rename = "access_token_invalid")]
31 AccessTokenInvalid,
32 #[serde(rename = "internal_error")]
33 InternalError,
34 #[serde(rename = "invalid_file_upload")]
35 InvalidFileUpload,
36 #[serde(rename = "invalid_params")]
37 InvalidParams,
38 #[serde(rename = "rate_limit_exceeded")]
39 RateLimitExceeded,
40 #[serde(rename = "scope_not_authorized")]
41 ScopeNotAuthorized,
42 #[serde(rename = "scope_permission_missed")]
43 ScopePermissionMissed,
44}
45
46impl std::fmt::Display for Code {
47 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
48 match self {
49 Self::Ok => write!(f, "ok"),
50 Self::AccessTokenInvalid => write!(f, "access_token_invalid"),
51 Self::InternalError => write!(f, "internal_error"),
52 Self::InvalidFileUpload => write!(f, "invalid_file_upload"),
53 Self::InvalidParams => write!(f, "invalid_params"),
54 Self::RateLimitExceeded => write!(f, "rate_limit_exceeded"),
55 Self::ScopeNotAuthorized => write!(f, "scope_not_authorized"),
56 Self::ScopePermissionMissed => write!(f, "scope_permission_missed"),
57 }
58 }
59}
60
61impl Default for Code {
62 fn default() -> Self {
63 Self::Ok
64 }
65}
66
67#[derive(Debug, Clone, Eq, Hash, PartialEq)]
68pub enum ErrorField {
69 Code,
70 Message,
71 LogId,
72}
73
74impl ErrorField {
75 pub fn all() -> HashSet<Self> {
76 let mut set = HashSet::new();
77 set.insert(ErrorField::Code);
78 set.insert(ErrorField::Message);
79 set.insert(ErrorField::LogId);
80 set
81 }
82}
83
84impl std::fmt::Display for ErrorField {
85 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
86 match self {
87 Self::Code => write!(f, "code"),
88 Self::Message => write!(f, "message"),
89 Self::LogId => write!(f, "log_id"),
90 }
91 }
92}