Commit graph

57 commits

Author SHA1 Message Date
Jon Gjengset
f3a03ed693
Merge pull request #234 from bitfehler/bitfehler/expunge-mod-seq
Expose HIGHESTMODSEQ value in EXPUNGE response
2022-07-16 07:36:01 -07:00
Conrad Hoffmann
4ea652e3f7 Expose MODSEQ attribute in FETCH responses
If the QRESYNC (RFC 7162) extension is being used, a FETCH response to a
STORE or UID STORE command with the UNCHANGEDSINCE query attribute will
return the mod sequence ID of the performed operation. This information
is crucial for building efficient caching clients.
2022-07-14 15:05:29 +02:00
Conrad Hoffmann
564063561d Mark struct types::Deleted non-exhaustive 2022-07-14 14:55:24 +02:00
Conrad Hoffmann
81ed9ff1cf Expose HIGHESTMODSEQ value in EXPUNGE response
If the `QRESYNC` extension (RFC 7162) is being used, `EXPUNGE` responses
will return the new highest mod sequence for the mailbox after the
expunge operation. Access to this value is quite valuable for caching
clients.
2022-07-14 12:05:37 +02:00
Crispin Stichart
b22ce3a605 Add support for Gmail Labels 2022-04-12 11:33:02 -05:00
Jon Gjengset
b9b9328e18
Manual Default for Mailbox is intentional 2021-11-09 18:32:19 -08:00
Todd Mortimer
efd0eadafe Implement get() for Fetch and Name 2021-07-31 19:26:48 -04:00
Todd Mortimer
54bca3eddb Add into_owned() for Fetch, Flag, and Name. 2021-07-31 18:22:59 -04:00
Todd Mortimer
fadb28a32b Revert accidental static lifetime to non-static. 2021-07-25 22:13:53 -04:00
Todd Mortimer
826e6d413b Fix tests and examples. 2021-07-17 16:51:35 -04:00
Todd Mortimer
3f2331423c Rework Name and Fetch to use ouroboros.
Use a helper function in `parse_many_into` to support parsing into
any container that implements Extend. Refactor Capabilities to use it.

Delete ZeroCopy and associated bits.

Move Flag into it's own module in types.
2021-07-17 16:32:26 -04:00
Todd Mortimer
c2d3aed978 Convert Capabilities to ouroboros. 2021-07-05 20:11:36 -04:00
♫ Christian Krause ♫
d86d1e228b
fixes doc typos (#204) 2021-06-03 01:00:11 -04:00
mordak
b7a2641725
Change "tls" feature to "native-tls" (#201)
Change "tls" feature to "native-tls" for clarity and obvious distinction with rustls-tls.
2021-05-24 21:46:49 -04:00
mordak
7204697dd9
Add ClientBuilder helper to make setting up TLS connections easy. (#197)
Also replaces connect() and connect_starttls() with ClientBuilder.
2021-05-10 22:39:46 -04:00
Todd Mortimer
584c9542d8 Reorder variants alphabetically in try_from. 2021-04-07 20:17:00 -04:00
Todd Mortimer
f2d7919f60 Do not wrap AttributeValue. 2021-04-07 20:10:33 -04:00
Todd Mortimer
efa02f07ab Remove wrapper around ResponseCode. 2021-04-07 20:02:34 -04:00
Todd Mortimer
5942553e7d Use iterators for Flag::from_strs() 2021-04-07 18:09:46 -04:00
Todd Mortimer
9126d3c15b Improve documentation around unhandled responses.
UnsolicitedResponse is not exhaustive, and open an issue if you find one
that isn't handled.
2021-04-06 21:54:52 -04:00
Todd Mortimer
e1db863691 Add helper function to transform a vec of flag strings into a vec of Flags.
Also use it where we were previously iterating manually.
2021-04-05 15:59:12 -04:00
Todd Mortimer
b8bd1e4cc7 Reorder UnsolicitedResponse alphabetically so it is easier to follow. 2021-04-05 15:39:38 -04:00
Todd Mortimer
529401a36d Implement a method to pass unilateral responses while IDLE.
While IDLE, the server sends unilateral responses to notify the client of
changes to the mailbox as they happen. Instead of always exiting the IDLE
on any change, allow the caller to pass a callback function which receives
the messages and returns an action to either Continue IDLE or Stop and exit.

For clients wishing to use the previous behaviour, a callback_stop convenience
function is provided that terminates the IDLE on any change to the mailbox.
2021-03-28 15:27:39 -04:00
Jon Gjengset
5b8e461eb6 Future-proof Flag for more variants 2021-03-06 15:30:23 -08:00
Jon Gjengset
18ca65dd3f Expose mailbox read-only flag 2021-03-06 15:02:48 -08:00
Jon Gjengset
9b78550394 Adopt latest imap_proto and expose error status codes 2021-03-06 14:53:14 -08:00
Jon Gjengset
a466e947bd
Merge branch 'master' into metadata-merge 2021-03-06 12:43:43 -05:00
Jon Gjengset
137f3de14f
Merge branch 'master' into mod_seq_vanished 2021-03-06 12:40:30 -05:00
Jon Gjengset
6935c51b2b
Merge branch 'master' into more-unilaterals 2021-03-06 12:37:52 -05:00
Todd Mortimer
a9788ad1e0 Add a Deleted type to wrap EXPUNGE and VANISHED responses.
EXPUNGE may return either a series of EXPUNGE responses each with
a single message sequence number, or a VANISHED response with a
sequence set of UIDs. This adds a wrapper enum and some associated
iterators to make it easy to handle these in the client.
2020-12-05 20:32:14 -05:00
Todd Mortimer
d381723deb Add non_exhaustive to Mailbox. 2020-11-14 16:52:03 -05:00
mordak
22dae40ab5
Fix typo in doc comment
Co-authored-by: Jon Gjengset <jon@thesquareplanet.com>
2020-11-14 16:45:50 -05:00
Todd Mortimer
c49e78b4d0 Update imap-proto and nom dependencies.
Add support for HIGHESTMODSEQ (RFC 4551) and VANISHED (RFC 7162),
which allows users to quickly synchronize to a mailbox by fetching
only changes since the last known highest mod sequence.
2020-11-11 11:37:33 -05:00
Todd Mortimer
753e1b9db1 Fix trivial clippy warnings. 2020-11-11 11:25:21 -05:00
mordak
ae07c9f31c
Add append_with_flags (#171)
Allows a client to set flags on a new message as it is appended to a mailbox.
2020-08-23 12:02:57 -04:00
sergey
a29b6f0cce Adding METADATA support 2020-05-19 15:58:43 +03:00
Jon Gjengset
cf4aed569b
Make UnsolicitedResponse non_exhaustive
That way, as we discover additional unilateral responses in the future,
we won't have to make a breaking change to add them.
2020-05-18 14:12:36 -04:00
Jon Gjengset
0c3ce7943d
Expose unilateral mailbox flag changes
This is a backwards incompatible change, since it adds a variant to a
public enum.
2020-05-18 14:12:13 -04:00
Jon Gjengset
464c59e6c1
Expunge holds a Seq 2020-05-18 14:10:28 -04:00
sergey
18526ffb61 Add bodystructure exposing function to Fetch structure. 2019-10-29 13:55:07 +02:00
avitex
c5f4495be7
Make capabilities has_str case insensitive 2019-09-04 20:25:51 +10:00
Jon Gjengset
2aa8c87e35
Move to 2018 edition 2019-09-03 09:35:15 -04:00
avitex
1c348a4ffa
Make has_str input generic 2019-09-02 23:02:51 +10:00
Lucas
3a5c2e9d91
Implemented new enumerated Capabilities from imap-proto crate. 2019-09-02 23:00:40 +10:00
Baudouin Feildel
e9f6a33bd5 Add Fetch.internal_date method (#113)
This method gives the parsed internal date from the FETCH answer.
2019-06-28 17:39:10 -04:00
Jon Gjengset
67ee2f5175
Bump version for imap-proto fixes
- A `NIL` hierarchy delimiter in a `Name` is now properly parsed and exposed as `None`
 - `RFC822.TEXT` responses are now returned by `Fetch::text()`.
2018-12-07 16:34:57 -05:00
Jon Gjengset
bce4831ccb
Clippy clean 2018-11-22 14:27:07 -05:00
Jon Gjengset
5dd9dfe469
Even more doc updates 2018-11-22 14:00:58 -05:00
Jon Gjengset
f83742dc3d
A significant documentation upgrade
Fixes #77.
Touches on #74.
Fixes #70 through documentation (I think?)
Fixes #62.
2018-11-21 16:37:47 -05:00
Johannes Schilling
f98398aecf send unsolicited responses to a channel instead of discarding them
notes

  * i tried to avoid the term "async", because that term is very
    overloaded and we're not using e.g. tokio/async-io here
  * i'm a little unhappy having to string the channel through the
    parser, because that seems rather a part of the client logic than
    parsing. on the other hand it's better than passing the whole
    client, so there's that at least.
2018-11-01 21:46:49 +01:00