use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct QuarantinePermissions {
pub styles: bool,
pub sharing: bool,
pub sr_images: bool,
pub subscriber_count: bool,
pub media: bool,
pub polls: bool,
pub videos: bool,
pub images: bool,
pub crossposts: bool,
}
#[serde(rename_all = "lowercase")]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum SubredditType {
Public,
Private,
}
#[serde(rename_all = "lowercase")]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum CommentSort {
Top,
Best,
Controversial,
New,
}
#[serde(rename_all = "lowercase")]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum SubredditSubmissionType {
Any,
Link,
Text,
}
#[serde(rename_all = "lowercase")]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum SubmissionType {
Link,
Text,
}
#[serde(rename_all = "lowercase")]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum LinkSort {
Hour,
Day,
Week,
Month,
Year,
All,
}
#[serde(rename_all = "lowercase")]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum AwardType {
Global,
Community,
}
#[serde(rename_all = "UPPERCASE")]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum AwardSubtype {
Global,
Community,
Premium,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Params(Vec<(String, String)>);
impl Params {
pub fn new() -> Self {
Self(Vec::new())
}
pub fn add(mut self, key: &str, value: &str) -> Self {
self.0.push((key.into(), value.into()));
self
}
}
impl Default for Params {
fn default() -> Self {
Self(Vec::new())
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Fullname(String);
impl AsRef<str> for Fullname {
fn as_ref(&self) -> &str {
&self.0
}
}
impl Fullname {
pub fn name(&self) -> String {
let parts: Vec<&str> = self.as_ref().split('_').collect();
parts[1].to_owned()
}
pub fn prefix(&self) -> String {
let parts: Vec<&str> = self.as_ref().split('_').collect();
parts[0].to_owned()
}
}