imap_client/tasks/tasks/
delete.rs1use imap_next::imap_types::{
2 command::CommandBody,
3 mailbox::Mailbox,
4 response::{StatusBody, StatusKind},
5};
6
7use super::TaskError;
8use crate::tasks::Task;
9
10#[derive(Clone, Debug)]
11pub struct DeleteTask {
12 mailbox: Mailbox<'static>,
13}
14
15impl DeleteTask {
16 pub fn new(mailbox: Mailbox<'static>) -> Self {
17 Self { mailbox }
18 }
19}
20
21impl Task for DeleteTask {
22 type Output = Result<(), TaskError>;
23
24 fn command_body(&self) -> CommandBody<'static> {
25 CommandBody::Delete {
26 mailbox: self.mailbox.clone(),
27 }
28 }
29
30 fn process_tagged(self, status_body: StatusBody<'static>) -> Self::Output {
31 match status_body.kind {
32 StatusKind::Ok => Ok(()),
33 StatusKind::No => Err(TaskError::UnexpectedNoResponse(status_body)),
34 StatusKind::Bad => Err(TaskError::UnexpectedBadResponse(status_body)),
35 }
36 }
37}