imap_proto/parser/
rfc7162.rs

1//!
2//!
3//! https://tools.ietf.org/html/rfc7162
4//!
5//! The IMAP QRESYNC Extensions
6//!
7
8use nom::{
9    bytes::streaming::tag_no_case, character::streaming::space1, combinator::opt, sequence::tuple,
10    IResult,
11};
12
13use crate::parser::core::sequence_set;
14use crate::types::*;
15
16// The VANISHED response reports that the specified UIDs have been
17// permanently removed from the mailbox.  This response is similar to
18// the EXPUNGE response (RFC3501); however, it can return information
19// about multiple messages, and it returns UIDs instead of message
20// numbers.
21// [RFC7162 - VANISHED RESPONSE](https://tools.ietf.org/html/rfc7162#section-3.2.10)
22pub(crate) fn resp_vanished(i: &[u8]) -> IResult<&[u8], Response> {
23    let (rest, (_, earlier, _, uids)) = tuple((
24        tag_no_case("VANISHED"),
25        opt(tuple((space1, tag_no_case("(EARLIER)")))),
26        space1,
27        sequence_set,
28    ))(i)?;
29    Ok((
30        rest,
31        Response::Vanished {
32            earlier: earlier.is_some(),
33            uids,
34        },
35    ))
36}