Skip to main content

snoo/models/
mod.rs

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}