twitter_api_v2/objects/
error.rs1use serde::{Deserialize, Serialize};
4use serde_json::{Map, Value};
5
6#[derive(Deserialize, Serialize, Debug, Clone)]
8pub struct Error {
9 pub r#type: String,
10 pub title: String,
11 pub detail: String,
12 #[serde(flatten)]
13 pub _others: Map<String, Value>,
14}
15
16#[cfg(test)]
17mod tests {
18 use super::*;
19
20 #[test]
21 fn test_de_error() {
22 let json = r#"
23 {
24 "client_id": "101010101",
25 "required_enrollment": "Standard Basic",
26 "registration_url": "https://developer.twitter.com/en/account",
27 "title": "Client Forbidden",
28 "detail": "This request must be made using an approved developer account that is enrolled in the requested endpoint. Learn more by visiting our documentation.",
29 "reason": "client-not-enrolled",
30 "type": "https://api.twitter.com/2/problems/client-forbidden"
31 }
32 "#;
33 match serde_json::from_str::<Error>(json) {
34 Ok(error) => {
35 assert_eq!(error.title, "Client Forbidden");
36 }
37 Err(err) => panic!("{err}"),
38 }
39
40 match serde_json::from_str::<Error>(include_str!(
42 "../../tests/response_body_json_files/tweets__manage_tweets__create__err.json"
43 )) {
44 Ok(error) => {
45 assert_eq!(error.title, "Invalid Request");
46 }
47 Err(err) => panic!("{err}"),
48 }
49 }
50}