tranquility/model/
misc.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct QuarantinePermissions {
8 pub styles: bool,
10 pub sharing: bool,
12 pub sr_images: bool,
14 pub subscriber_count: bool,
16 pub media: bool,
18 pub polls: bool,
20 pub videos: bool,
22 pub images: bool,
24 pub crossposts: bool,
26}
27
28#[serde(rename_all = "lowercase")]
29#[derive(Debug, Clone, Serialize, Deserialize)]
30pub enum SubredditType {
32 Public,
34 Private,
36}
37
38#[serde(rename_all = "lowercase")]
39#[derive(Debug, Clone, Serialize, Deserialize)]
40pub enum CommentSort {
42 Top,
44 Best,
46 Controversial,
48 New,
50}
51
52#[serde(rename_all = "lowercase")]
53#[derive(Debug, Clone, Serialize, Deserialize)]
54pub enum SubredditSubmissionType {
56 Any,
58 Link,
60 Text,
62}
63
64#[serde(rename_all = "lowercase")]
65#[derive(Debug, Clone, Serialize, Deserialize)]
66pub enum SubmissionType {
68 Link,
70 Text,
72}
73
74#[serde(rename_all = "lowercase")]
75#[derive(Debug, Clone, Serialize, Deserialize)]
76pub enum LinkSort {
78 Hour,
80 Day,
82 Week,
84 Month,
86 Year,
88 All,
90}
91
92#[serde(rename_all = "lowercase")]
93#[derive(Debug, Clone, Serialize, Deserialize)]
94pub enum AwardType {
96 Global,
98 Community,
100}
101
102#[serde(rename_all = "UPPERCASE")]
103#[derive(Debug, Clone, Serialize, Deserialize)]
104pub enum AwardSubtype {
106 Global,
108 Community,
110 Premium,
112}
113
114#[derive(Debug, Clone, Serialize, Deserialize)]
116pub struct Params(Vec<(String, String)>);
117
118impl Params {
119 pub fn new() -> Self {
121 Self(Vec::new())
122 }
123
124 pub fn add(mut self, key: &str, value: &str) -> Self {
126 self.0.push((key.into(), value.into()));
127 self
128 }
129}
130
131impl Default for Params {
132 fn default() -> Self {
133 Self(Vec::new())
134 }
135}
136
137#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
139pub struct Fullname(String);
140
141impl AsRef<str> for Fullname {
142 fn as_ref(&self) -> &str {
143 &self.0
144 }
145}
146
147impl Fullname {
148 pub fn name(&self) -> String {
150 let parts: Vec<&str> = self.as_ref().split('_').collect();
151 parts[1].to_owned()
152 }
153
154 pub fn prefix(&self) -> String {
156 let parts: Vec<&str> = self.as_ref().split('_').collect();
157 parts[0].to_owned()
158 }
159}