From 314c3ae5e81b2ea86a4789113b92f20916645463 Mon Sep 17 00:00:00 2001 From: syn Date: Wed, 27 Jan 2021 00:17:03 +0300 Subject: Quick n dirty generation of tdlib bindings --- src/lib.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/lib.rs (limited to 'src/lib.rs') 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 { + String::deserialize(deserializer)?.parse::().map_err(serde::de::Error::custom) +} +#[allow(unused)] +pub fn deserialize_i64_1<'de, D: Deserializer<'de>>(deserializer: D) -> std::result::Result, D::Error> { + use std::str::FromStr; + Vec::<&'de str>::deserialize(deserializer)? + .into_iter() + .map(i64::from_str) + .collect::, _>>() + .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.timestamp(date as i64, 0); + format!("{}", dt) +} + +impl ClientExt for Client {} -- cgit v1.2.1-18-gbd029