use crate::{
auth::UserDetail,
server::controlchan::{
Reply, ReplyCode,
error::ControlChanError,
handler::{CommandContext, CommandHandler},
},
storage::{Metadata, StorageBackend},
};
use async_trait::async_trait;
#[derive(Debug, PartialEq, Eq, Clone)]
pub enum Opt {
Utf8 { on: bool },
}
#[derive(Debug)]
pub struct Opts {
option: Opt,
}
impl Opts {
pub fn new(option: Opt) -> Self {
Opts { option }
}
}
#[async_trait]
impl<Storage, User> CommandHandler<Storage, User> for Opts
where
User: UserDetail + 'static,
Storage: StorageBackend<User> + 'static,
Storage::Metadata: Metadata,
{
#[tracing_attributes::instrument]
async fn handle(&self, _args: CommandContext<Storage, User>) -> Result<Reply, ControlChanError> {
match &self.option {
Opt::Utf8 { on: true } => Ok(Reply::new(ReplyCode::CommandOkay, "Always in UTF-8 mode.")),
Opt::Utf8 { on: false } => Ok(Reply::new(ReplyCode::CommandNotImplementedForParameter, "Non UTF-8 mode not supported")),
}
}
}