]> Untitled Git - lemmy.git/blob - crates/utils/src/lib.rs
Merge pull request #2593 from LemmyNet/refactor-notifications
[lemmy.git] / crates / utils / src / lib.rs
1 #[macro_use]
2 extern crate strum_macros;
3 #[macro_use]
4 extern crate smart_default;
5
6 pub mod apub;
7 pub mod email;
8 pub mod rate_limit;
9 pub mod settings;
10
11 pub mod claims;
12 pub mod error;
13 pub mod request;
14 #[cfg(test)]
15 mod test;
16 pub mod utils;
17 pub mod version;
18
19 use serde::{Deserialize, Serialize};
20 use std::{fmt, time::Duration};
21 use url::Url;
22
23 pub type ConnectionId = usize;
24
25 pub const REQWEST_TIMEOUT: Duration = Duration::from_secs(10);
26
27 #[derive(PartialEq, Eq, Hash, Debug, Clone)]
28 pub struct IpAddr(pub String);
29
30 impl fmt::Display for IpAddr {
31   fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
32     write!(f, "{}", self.0)
33   }
34 }
35
36 #[derive(Serialize, Deserialize, Debug)]
37 pub struct WebfingerLink {
38   pub rel: Option<String>,
39   #[serde(rename = "type")]
40   pub kind: Option<String>,
41   pub href: Option<Url>,
42 }
43
44 #[derive(Serialize, Deserialize, Debug)]
45 pub struct WebfingerResponse {
46   pub subject: String,
47   pub links: Vec<WebfingerLink>,
48 }
49
50 #[macro_export]
51 macro_rules! location_info {
52   () => {
53     format!(
54       "None value at {}:{}, column {}",
55       file!(),
56       line!(),
57       column!()
58     )
59   };
60 }