1use super::{AgentConfiguration, Client, LoginOptions, LogoutOptions};
2use std::fmt::{Display, Formatter};
3
4#[derive(Clone, Debug)]
6pub enum Error {
7 NoAgent,
9}
10
11impl Display for Error {
12 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13 match self {
14 Self::NoAgent => write!(f, "no agent"),
15 }
16 }
17}
18
19impl std::error::Error for Error {}
20
21pub trait OAuth2Operations<C: Client> {
23 fn configure(&self, config: AgentConfiguration<C>) -> Result<(), Error>;
27
28 fn start_login(&self) -> Result<(), Error>;
30
31 fn start_login_opts(&self, options: LoginOptions) -> Result<(), Error>;
33
34 fn logout(&self) -> Result<(), Error>;
36
37 fn logout_opts(&self, options: LogoutOptions) -> Result<(), Error>;
39}