1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
use std::fmt::{Display, Formatter, Result as FmtResult};
pub struct ListingOptions {
pub batch: u8,
pub anchor: ListingAnchor,
}
impl Display for ListingOptions {
fn fmt(&self, f: &mut Formatter) -> FmtResult {
write!(f, "limit={}", self.batch)
}
}
impl ListingOptions {
pub fn default() -> ListingOptions {
ListingOptions {
batch: 25,
anchor: ListingAnchor::None,
}
}
}
pub enum ListingAnchor {
After(String),
Before(String),
None,
}
impl Display for ListingAnchor {
fn fmt(&self, f: &mut Formatter) -> FmtResult {
match *self {
ListingAnchor::Before(ref pos) => write!(f, "before={}", pos),
ListingAnchor::After(ref pos) => write!(f, "after={}", pos),
ListingAnchor::None => Ok(()),
}
}
}
#[allow(missing_docs)]
pub enum TimeFilter {
Hour,
Day,
Week,
Month,
Year,
AllTime,
}
impl Display for TimeFilter {
fn fmt(&self, f: &mut Formatter) -> FmtResult {
let s = match *self {
TimeFilter::Hour => "hour",
TimeFilter::Day => "day",
TimeFilter::Week => "week",
TimeFilter::Month => "month",
TimeFilter::Year => "year",
TimeFilter::AllTime => "all",
};
write!(f, "&t={}", s)
}
}
pub struct LinkPost {
pub title: String,
pub link: String,
pub resubmit: bool,
}
impl LinkPost {
pub fn new(title: &str, link: &str) -> LinkPost {
LinkPost {
title: title.to_owned(),
link: link.to_owned(),
resubmit: false,
}
}
pub fn resubmit(mut self) -> LinkPost {
self.resubmit = true;
self
}
}
pub struct SelfPost {
pub title: String,
pub text: String,
}
impl SelfPost {
pub fn new(title: &str, text: &str) -> SelfPost {
SelfPost {
title: title.to_owned(),
text: text.to_owned(),
}
}
}