Commit graph

271 commits

Author SHA1 Message Date
Curtis McEnroe
6b4461eb07
Borrow TlsConnector
TlsConnector is meant to be reusable and there is no reason to take
ownership over one.
2018-03-18 22:18:15 -04:00
Jon Gjengset
804f1c724a
Merge pull request #65 from mordak/fix-debug
Fix debug output when Client.debug = true
2018-02-24 17:48:29 -05:00
todd
a2df6fffd8 When printing debug info, slice from the start of the line to the CRLF 2018-02-24 16:06:37 -05:00
Matt McCoy
9031caf677 Bump for new changes 2018-02-09 11:25:18 -05:00
Jon Gjengset
590b80e3a6 Add structured results for all values using imap-proto (#58)
* First stab at structured types (#28)

Tests currently fail due to djc/imap-proto#2.

LSUB is also broken due to djc/imap-proto#4 (but we don't have tests for
that atm).

* Also parse out RFC822 fetch responses

* Make all the things zero-copy

* Also delegate IntoIterator for ZeroCopy ref

* Fix UNSEEN and LSUB

All tests now pass

* Address @sanmai-NL comments

* Correctly handle incomplete parser responses

* No need for git dep anymore
2018-02-09 11:22:20 -05:00
Jon Gjengset
dc21eae428
Workaround for travis-ci/travis-ci#9061 2018-01-22 19:55:38 -05:00
Jon Gjengset
4332d09f0d
cargo fmt 2017-11-02 22:56:22 -04:00
Jon Gjengset
bf53267149
Merge pull request #57 from rhn/validation
Validation of input strings
2017-11-02 20:22:39 -04:00
rhn
5acf34c3b4 Ensures that some operations don't accept invalid data.
Invalid characters in input strings are \r and \n, according to RFC3501 section 4.3.
2017-11-02 21:15:48 +01:00
rhn
c899986685 Make Bad Response error print the actual response 2017-11-02 21:15:48 +01:00
Jon Gjengset
d9caeccc57
Merge pull request #56 from rhn/quote-password
Escape password and other astring tokens
2017-11-02 16:09:53 -04:00
rhn
ed47ae34b7 Replace tabs with 4-spaces 2017-11-02 21:06:13 +01:00
rhn
61485c9036 Quotes various astring tokens as per RFC 3501
Some notable exceptions: messagebox names are defined as `INBOX / astring`, but with this change, INBOX is also quoted.
The `list-mailbox` token is not quoted, as it is not `astring`.
2017-11-02 21:05:29 +01:00
rhn
13316f33b8 Uses raw string for quote!, and adds qoute! tests. 2017-11-02 20:43:12 +01:00
Giulio Collura
1ad1f1f847 Escape password according to RFC3501
Rebased by rhn <gihu.rhn@porcupinefactory.org>
2017-11-02 20:42:08 +01:00
Jon Gjengset
542ee159a4
Remove questionable Ord derives 2017-10-30 20:57:26 -04:00
Sander Maijers
dc7ad26ac1
Make types eagerly implement common traits
See https://rust-lang-nursery.github.io/api-guidelines/interoperability.html#types-eagerly-implement-common-traits-c-common-traits
2017-10-30 20:57:06 -04:00
Sander Maijers
0779d3b15e
Don’t panic on receiving data not encoded in UTF-8
Return a `Result` instead.
2017-10-30 20:57:06 -04:00
Greizgh
a29874d41b
Update readme to use native_tls 2017-10-30 20:57:06 -04:00
Matt McCoy
c7a1fa647e Add OSX build on Travis CI
Just to make sure we can build on OSX.
2017-10-04 20:13:31 -04:00
Matt McCoy
9ff36c3bef Update and add badges to README (#47)
Adding badges for the number of crate downloads
and license. Also updating the crate badge to
be retreived from img.shields.io.
2017-10-04 20:06:57 -04:00
Jon Gjengset
f72c28aab7 Use cargo-tarpaulin instead of kcov/cargo-travis (#46) 2017-10-04 19:47:31 -04:00
Matt McCoy
32a1cabf6e Switch from travis-cargo to cargo-travis (#44)
travis-cargo no longer works with coveralls, and appears
to be unmaintained. This change use regular cargo to
build and test. It now uses cargo-travis to push test
results to coveralls. This will also build nightly, and 
only push test results on the stable build.
2017-10-02 19:52:21 -04:00
Matt McCoy
ecda5165fb Build with rust 1.20.0 in Travis CI 2017-10-01 20:29:44 -04:00
Matt McCoy
8bcd2d2d28 Bumping version from 0.5.0 -> 0.6.0
Bumping the version because openssl was swapped for native-tls
in #43.
2017-10-01 19:54:00 -04:00
Jon Gjengset
7c95ae76d6 Swap openssl for native-tls (#43)
* Replace openssl with native-tls

* Add From<TlsError> to allow builder()?

* Update AppVeyor config

* No email since it's not configured
2017-10-01 19:53:03 -04:00
Jon Gjengset
ba2eb75ddd
Bump base64 dev-dependency; 0.2 is old 2017-09-30 21:32:39 -04:00
Jon Gjengset
e65bbe1006
rustfmt. fixes #29 2017-09-30 17:58:30 -04:00
Matt McCoy
8a97392cb3 Bumping version from 0.4.1 -> 0.5.0
Bumping version because of updates to the IDLE
API made in #41
2017-09-29 22:38:47 -04:00
Jon Gjengset
b07216ca7a Make IDLE API be more straightforward (#41)
In particular, the API for `IdleHandle` now reflects that it is only
really meant for single-use. It mutably borrows the `Client`, so once
`wait` returns there isn't really a good reason to keep the `IdleHandle`
around (because you'll likely want to issue some other commands).

There is something to be said for being able to operate on the IDLE
stream, but we'll leave that for later.

This also avoids some unfortunate unavoidable panics when the connection
fails while the client is IDLEing.
2017-09-29 22:37:15 -04:00
Jon Gjengset
50b6267a35 Add more info to Cargo.toml (#42)
crates.io also requires a version change for this to be made visible.
2017-09-29 22:26:49 -04:00
Jon Gjengset
300cfc04f8 Use docs.rs for documentation (#40)
* Use docs.rs for documentation

This would also allow deleting the `gh-pages` branch (which is pretty large).
I'd also recommend adding `badges` and `categories` to make the crates.io page more useful (see [this](http://www.integer32.com/2017/01/20/categories-and-ci-badges.html)), but I'll leave that up to you.

* Remove more references to old docs
2017-09-28 17:19:54 -04:00
Matt McCoy
6a2aed4054 Bumping version from 0.3.3 -> 0.4.0
Bumping version because of change to use BufStream for
better I/O handling.
2017-09-27 17:47:35 -04:00
Jon Gjengset
8383b47f35 Use BufStream for better I/O handling (#39)
* Use bufstream for better read/write

* Read with length 0 == EOF

* Adapt read_delay test to write one chat at a time

* Add test for eof reads

* Neater interface for MockStream
2017-09-27 17:38:51 -04:00
Matt McCoy
3e017da4af Bump version from 0.3.2 -> 0.3.3 2017-07-12 20:59:31 -04:00
Matt McCoy
55e860e8d4 Add a build for windows using appveyor (#37) 2017-07-12 17:05:32 -04:00
Matt McCoy
b0a095e292 Remove unneeded to_string() function calls
The code was calling to_string() which was turning
String types into String types. This is redundant and we don't need to do it.
2017-07-10 21:47:54 -04:00
Matt McCoy
86e1d46507 rustfmt the codebase (#36)
This will ensure that we are properly formatting this library code according to rust standards
2017-07-10 21:38:13 -04:00
Matt McCoy
62cef4a773 Bumping version from 0.3.1 -> 0.3.2 after fixing readline bug 2017-06-20 19:16:23 -04:00
Matt McCoy
fe398fb531 This fixes #23 don't put 0 size read result into buffer. This will prevent it from filling up memory when reading responses 2017-06-20 19:14:00 -04:00
Jos van den Oever
08c2b6847b Add APPEND call. (#30) 2017-05-02 22:08:24 -04:00
Matt McCoy
3b6816b732 Updating version 2017-05-02 21:57:45 -04:00
drevilt
89a8d0eaf3 update to openssl 0.9 (#31) 2017-05-01 15:39:12 -04:00
Matt McCoy
39f889430b Updating versioning 2017-03-02 18:08:30 -05:00
Jon Gjengset
e5b4346114 Add IMAP IDLE support (#27)
* Add IMAP IDLE support

This patch adds support for the IMAP IDLE command specified in RFC 2177.
It allows clients to block while waiting for changes to a selected
mailbox, without having to poll the server. This is especially useful
for monitoring a mailbox for new messages.

The API is currently somewhat primitive: users can call `Client::idle()`
to get an IDLE "handle", which they can then call `wait()` on to block
until a change is detected. The implementation also provides
`wait_keepalive()` (which tries to avoid connection timeouts) and
`wait_timeout()` (which allows the user to specify the maximum time to
block).

Further down the line, the handle should probably also implement
`Iterator` to allow clients to watch new events as they happen. This
*could* be implemented today, but given that most other `Client` methods
just return unparsed strings at the moment, I didn't feel like that
enhancement was a high priority. For now, users will have to manually
query the mailbox for what changed.

Fixes #26.

* Avoid unnecessary as_bytes()

* Make wait_keepalive interval configurable

* Avoid ?, which requires Rust 1.13
2017-03-02 17:55:32 -05:00
Matt McCoy
1ef94f86dc Compile using only the stable and beta versions of Rust 2017-03-02 17:31:56 -05:00
Matt McCoy
61c7c0ff0a Updating version 2017-03-02 17:17:25 -05:00
drevilt
59163929d3 update regex to 0.2 (#25) 2017-03-02 17:16:22 -05:00
Matt McCoy
257cf90f46 Updating version 2017-03-02 17:14:11 -05:00
drevilt
dc3b4f92e6 update to openssl 0.8 and unspecify micro versions (#22) 2017-03-02 17:08:54 -05:00