use anyhow::Result;
use tangled_api::lexicon::com::atproto::server;
use tangled_config::session::Session;
pub async fn login_with_password(
pds_base: &str,
handle: &str,
password: &str,
) -> Result<Session> {
let input = server::create_session::Input {
identifier: handle.to_string(),
password: password.to_string(),
..Default::default()
};
let rb = server::create_session(super::http(), pds_base, &input);
let out: server::create_session::Output = super::xrpc_send(rb).await?;
Ok(Session {
access_jwt: out.access_jwt,
refresh_jwt: out.refresh_jwt,
did: out.did,
handle: out.handle,
..Default::default()
})
}
pub async fn refresh_session(
pds_base: &str,
refresh_jwt: &str,
) -> Result<Session> {
let rb = server::refresh_session(super::http(), pds_base)
.bearer_auth(refresh_jwt);
let out: server::refresh_session::Output = super::xrpc_send(rb).await?;
Ok(Session {
access_jwt: out.access_jwt,
refresh_jwt: out.refresh_jwt,
did: out.did,
handle: out.handle,
..Default::default()
})
}