aboutsummaryrefslogblamecommitdiff
path: root/src/server.rs
blob: 365bc0f0385d435c48e69f0f53dfa9e6f193fdab (plain) (tree)
1
2
3
4
5
6
7
8
9
                   

                   
                     
                     
                   
 
                                                     
                                               
 

                               
                                             
 

                                                      
                 
                                                                 
                                                          

          
 
                                                
                                                                            
 
                          



                                   

                                                                                   
 
                    
                                                                                                 

                              


              
use anyhow::Result;
use std::sync::Arc;

use crate::config::*;
use crate::mailstore;
use crate::service;

use boitalettres::server::accept::addr::AddrIncoming;
use boitalettres::server::Server as ImapServer;

pub struct Server {
    pub incoming: AddrIncoming,
    pub mailstore: Arc<mailstore::Mailstore>,
}
impl Server {
    pub async fn new(config: Config) -> Result<Self> {
        Ok(Self {
            incoming: AddrIncoming::new("127.0.0.1:4567").await?,
            mailstore: mailstore::Mailstore::new(config)?,
        })
    }

    pub async fn run(self: Self) -> Result<()> {
        tracing::info!("Starting server on {:#}", self.incoming.local_addr);

        /*let creds = self
        .mailstore
        .login_provider
        .login("quentin", "poupou")
        .await?;*/
        //let mut mailbox = Mailbox::new(&creds, "TestMailbox".to_string()).await?;
        //mailbox.test().await?;

        let server =
            ImapServer::new(self.incoming).serve(service::Instance::new(self.mailstore.clone()));
        let _ = server.await?;

        Ok(())
    }
}