imap_client/tasks/tasks/
check.rs

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