1pub mod auth;
2mod comment;
3mod listing;
4mod metadata;
5mod post;
6mod search;
7mod subreddit;
8mod user;
9
10use serde::Deserialize;
11
12pub use crate::models::{
13 comment::CommentData,
14 listing::ListingData,
15 metadata::{ModerateData, VoteData},
16 post::{PostImage, PostImages, PostInfo, PostPreview},
17 search::SearchInfo,
18 subreddit::SubredditInfo,
19 user::UserInfo,
20};
21
22#[derive(Deserialize, Clone, Debug)]
23pub struct RedditResponseGeneric<T> {
24 pub kind: String,
25 pub data: T,
26}
27
28#[derive(Deserialize, Clone, Debug)]
29#[serde(tag = "kind", content = "data")]
30pub enum RedditResponse {
31 #[serde(rename = "t1")]
32 Comment(CommentData),
33
34 #[serde(rename = "t2")]
35 RedditUser(UserInfo),
36
37 #[serde(rename = "t3")]
38 Post(PostInfo),
39
40 #[serde(rename = "t4")]
41 PrivateMessage(),
42
43 #[serde(rename = "t5")]
44 Subreddit(SubredditInfo),
45
46 #[serde(rename = "Listing")]
47 Listing(ListingData<RedditResponse>),
48
49 #[serde(rename = "modaction")]
50 ModAction(),
51
52 #[serde(rename = "more")]
53 More(),
54
55 #[serde(rename = "LiveUpdate")]
56 LiveUpdate(),
57
58 #[serde(rename = "LiveUpdateEvent")]
59 LiveUpdateEvent(),
60
61 Invalid,
62}