diff options
Diffstat (limited to 'src/mail/user.rs')
-rw-r--r-- | src/mail/user.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/mail/user.rs b/src/mail/user.rs new file mode 100644 index 0000000..7465ab0 --- /dev/null +++ b/src/mail/user.rs @@ -0,0 +1,31 @@ +use anyhow::Result; + +use k2v_client::K2vClient; +use rusoto_s3::S3Client; + +use crate::login::Credentials; +use crate::mail::mailbox::Mailbox; + +pub struct User { + pub username: String, + pub creds: Credentials, + pub s3_client: S3Client, + pub k2v_client: K2vClient, +} + +impl User { + pub fn new(username: String, creds: Credentials) -> Result<Self> { + let s3_client = creds.s3_client()?; + let k2v_client = creds.k2v_client()?; + Ok(Self { + username, + creds, + s3_client, + k2v_client, + }) + } + + pub fn open_mailbox(&self, name: String) -> Result<Mailbox> { + Mailbox::new(&self.creds, name) + } +} |