imap_client/tasks/tasks/
check.rs1use 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}