summaryrefslogtreecommitdiffstats
path: root/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
new file mode 100644
index 0000000..de3a4cf
--- /dev/null
+++ b/src/lib.rs
@@ -0,0 +1,43 @@
+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)
+}
+
+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 {}