aboutsummaryrefslogtreecommitdiff
path: root/src/imap/command/selected.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/imap/command/selected.rs')
-rw-r--r--src/imap/command/selected.rs38
1 files changed, 25 insertions, 13 deletions
diff --git a/src/imap/command/selected.rs b/src/imap/command/selected.rs
index a068fab..fb6a75d 100644
--- a/src/imap/command/selected.rs
+++ b/src/imap/command/selected.rs
@@ -1,5 +1,4 @@
-
-use anyhow::{Result, Error};
+use anyhow::{Error, Result};
use boitalettres::proto::Response;
use imap_codec::types::command::CommandBody;
use imap_codec::types::core::Tag;
@@ -8,21 +7,32 @@ use imap_codec::types::response::{Response as ImapRes, Status};
use imap_codec::types::sequence::SequenceSet;
use crate::imap::command::authenticated;
-use crate::imap::session::InnerContext;
use crate::imap::flow;
+use crate::imap::session::InnerContext;
use crate::mailbox::Mailbox;
-
-pub async fn dispatch<'a>(inner: InnerContext<'a>, user: &'a flow::User, mailbox: &'a Mailbox) -> Result<(Response, flow::Transition)> {
- let ctx = StateContext { tag: &inner.req.tag, inner, user, mailbox };
+pub async fn dispatch<'a>(
+ inner: InnerContext<'a>,
+ user: &'a flow::User,
+ mailbox: &'a Mailbox,
+) -> Result<(Response, flow::Transition)> {
+ let ctx = StateContext {
+ tag: &inner.req.tag,
+ inner,
+ user,
+ mailbox,
+ };
match &ctx.inner.req.body {
- CommandBody::Fetch { sequence_set, attributes, uid, } => ctx.fetch(sequence_set, attributes, uid).await,
+ CommandBody::Fetch {
+ sequence_set,
+ attributes,
+ uid,
+ } => ctx.fetch(sequence_set, attributes, uid).await,
_ => authenticated::dispatch(ctx.inner, user).await,
}
}
-
// --- PRIVATE ---
struct StateContext<'a> {
@@ -32,16 +42,18 @@ struct StateContext<'a> {
tag: &'a Tag,
}
-
impl<'a> StateContext<'a> {
pub async fn fetch(
&self,
sequence_set: &SequenceSet,
attributes: &MacroOrFetchAttributes,
uid: &bool,
- ) -> Result<(Response, flow::Transition)> {
- Ok((vec![
- ImapRes::Status(Status::bad(Some(self.tag.clone()), None, "Not implemented").map_err(Error::msg)?),
- ], flow::Transition::No))
+ ) -> Result<(Response, flow::Transition)> {
+ Ok((
+ vec![ImapRes::Status(
+ Status::bad(Some(self.tag.clone()), None, "Not implemented").map_err(Error::msg)?,
+ )],
+ flow::Transition::No,
+ ))
}
}