use super::{SoapHandler, UserInfo, parse};
use crate::error::{ForceError, Result};
use chrono::{DateTime, Utc};
impl<A: crate::auth::Authenticator> SoapHandler<A> {
pub async fn get_user_info(&self) -> Result<UserInfo> {
let xml = self.send("<urn:getUserInfo/>").await?;
parse::parse_user_info(&xml)
}
pub async fn get_server_timestamp(&self) -> Result<DateTime<Utc>> {
let xml = self.send("<urn:getServerTimestamp/>").await?;
let timestamp = parse::parse_server_timestamp(&xml)?;
DateTime::parse_from_rfc3339(×tamp)
.map(|dt| dt.with_timezone(&Utc))
.map_err(|err| {
ForceError::InvalidInput(format!("invalid server timestamp '{timestamp}': {err}"))
})
}
}