pub mod compound_messenger;
pub mod local_server;
pub mod stdio_messenger;
use oauth2::CsrfToken;
use url::Url;
pub use compound_messenger::CompoundMessenger;
pub use local_server::LocalServerMessenger;
pub use stdio_messenger::StdioMessenger;
use crate::Error;
#[derive(Debug, Clone)]
pub struct AuthContext {
pub auth_url: Option<Url>,
pub csrf: Option<CsrfToken>,
pub redirect_url: Option<Url>,
}
pub trait ChannelMessenger: Sync + Send {
fn with_context(
&mut self,
context: AuthContext,
) -> impl std::future::Future<Output = Result<(), Error>> + Send;
fn send_auth_message(&self) -> impl std::future::Future<Output = Result<(), Error>> + Send;
fn receive_auth_message(
&self,
) -> impl std::future::Future<Output = Result<String, Error>> + Send;
}