MailCraft crates/ews at a44a450: the request envelope and the escaping element builder (soap.rs), and the judging of an answer's envelope, faults and response messages (reply.rs, the response codes of error.rs), now read with craft-xml in place of MailCraft's own XML reader. The operations, HTTP, Autodiscover, authentication and sync stay in MailCraft. Co-authored-by: Martin Ball <98639962+benandez@users.noreply.github.com>
2.1 KiB
craft-ews
The SOAP layer of Exchange Web Services, without sockets.
- Requests:
Elementbuilds an operation's elements (Element::new("m:GetFolder").child(…)) and escapes everything it is given: attribute values lose every control character, text keeps its tabs and line feeds and writes a carriage return as , names keep only what a qualified name is made of.envelope(Version, &operation)writes the SOAP 1.1 envelope withRequestServerVersion. - Answers:
Answer::parsereads the envelope withcraft-xml. A fault is the error it names;Answer::messages("GetFolder")gives theGetFolderResponseMessages with theirResponseClassandResponseCode, andResponseMessage::okthe element or the error. A busy server (ErrorServerBusy, or that code insideErrorInternalServerError) gives its wait, clamped to 1 s to 5 min.
Names in an answer carry fixed prefixes whatever the server used: s: envelope, m: messages,
t: types, e: errors.
Written from Microsoft's public documentation: the EWS reference, [MS-OXWSCDATA] and [MS-OXWSCORE].
Hostile input
A document type declaration, malformed markup, more than 40 levels, more than 100,000 nodes or
more than 64 MiB is Error::Malformed; an entity XML does not define is left out. Errors hold no
text a server wrote except a response code that is a short identifier (64 letters and digits at
most). Debug output of an answer or a message shows nothing a server chose.
What stays in the apps
HTTP and its status codes, Autodiscover, NTLM and Basic authentication, the operations (which elements to send, what to make of what comes back), sync state and the mapping onto a mailbox.
Origin
MailCraft crates/ews (soap.rs, reply.rs, the response codes of error.rs, the escaping of
xml.rs) at
a44a450,
by Martin Ball and the MailCraft contributors (MIT OR Apache-2.0), with the tests of that layer.
MailCraft's own bounded XML reader (xml.rs) is replaced by craft-xml.