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