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
|
use serde::Deserializer;
use serde::Deserialize;
use tdlib_rs::Client;
#[allow(unused)]
pub fn deserialize_i64_0<'de, D: Deserializer<'de>>(deserializer: D) -> std::result::Result<i64, D::Error> {
String::deserialize(deserializer)?.parse::<i64>().map_err(serde::de::Error::custom)
}
#[allow(unused)]
pub fn deserialize_i64_1<'de, D: Deserializer<'de>>(deserializer: D) -> std::result::Result<Vec<i64>, D::Error> {
use std::str::FromStr;
Vec::<&'de str>::deserialize(deserializer)?
.into_iter()
.map(i64::from_str)
.collect::<std::result::Result<Vec<_>, _>>()
.map_err(serde::de::Error::custom)
}
//include!("generated.rs");
pub mod generated;
pub use generated::*;
impl std::fmt::Display for UserStatus {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
UserStatus::UserStatusEmpty => write!(f, "seen never"),
UserStatus::UserStatusOnline(online) => write!(f, "online. expires: {}", fmt_date(online.expires)),
UserStatus::UserStatusOffline(offline) => write!(f, "online. expires: {}", fmt_date(offline.was_online)),
UserStatus::UserStatusRecently => write!(f, "seen recently"),
UserStatus::UserStatusLastWeek => write!(f, "seen last week"),
UserStatus::UserStatusLastMonth => write!(f, "seen last month"),
}
}
}
fn fmt_date(date: i32) -> String {
use chrono::TimeZone;
let dt: chrono::DateTime<chrono::Local> = chrono::Local.timestamp(date as i64, 0);
format!("{}", dt)
}
impl ClientExt for Client {}
|