Blame README

Packit 700f92
========================
Packit 700f92
Packit 700f92
1. BUILD
Packit 700f92
Packit 700f92
   $ cd .../sources/evolution-ews
Packit 700f92
   $ mkdir build
Packit 700f92
   $ cd build
Packit 700f92
   $ cmake -G "Unix Makefiles" \
Packit 700f92
           -DCMAKE_INSTALL_PREFIX=/opt/evolution \
Packit 700f92
           -DCMAKE_BUILD_TYPE=Release \
Packit 700f92
           ..
Packit 700f92
   $ make -j
Packit 700f92
   $ make -j install
Packit 700f92
Packit 700f92
Run `cmake --help` to get list of available generators (the -G argument)
Packit 700f92
on your platform.
Packit 700f92
Packit 700f92
========================
Packit 700f92
Packit 700f92
2. Test Suite
Packit 700f92
Packit 700f92
Pre-requisites to launch the test suite.
Packit 700f92
Export the following environmental variables for your test suite to run.
Packit 700f92
Packit 700f92
EWS_TEST_USERNAME
Packit 700f92
EWS_TEST_PASSWORD
Packit 700f92
EWS_TEST_EMAIL
Packit 700f92
EWS_TEST_URI
Packit 700f92
Packit 700f92
   $ make check
Packit 700f92
Packit 700f92
=========================
Packit 700f92
Packit 700f92
3. Autodiscover reference
Packit 700f92
Packit 700f92
The Autodiscover service provides the configuration information necessary to 
Packit 700f92
create a connection to an Exchange server. The Autodiscover service provides 
Packit 700f92
a mechanism that allows you to use “plain old XML” (POX) messages — that is, 
Packit 700f92
messages that consist solely of XML payloads without any enclosing SOAP 
Packit 700f92
envelopes — to locate the settings that a client application must have in 
Packit 700f92
order to connect to Exchange.
Packit 700f92
Packit 700f92
Currently the test suite uses autodiscovery to fetch the url to connect to,
Packit 700f92
using your username and email provided.
Packit 700f92
Packit 700f92
Reference:
Packit 700f92
http://msdn.microsoft.com/en-us/library/aa581522.aspx
Packit 700f92
Packit 700f92
The ASUrl (POX) element contains the url. Use this for all subsequent requests
Packit 700f92
to your Exchange server.
Packit 700f92
Packit 700f92
A typical ASUrl looks like this,
Packit 700f92
https://server_ip/EWS/Exchange.asmx
Packit 700f92
Packit 700f92
==========================
Packit 700f92
Packit 700f92
4. URLs
Packit 700f92
Packit 700f92
  -> Development overview - http://msdn.microsoft.com/en-us/library/cc535017%28v=EXCHG.80%29.aspx
Packit 700f92
Packit 700f92
  -> Autodiscover reference - http://msdn.microsoft.com/en-us/library/aa581522.aspx
Packit 700f92
Packit 700f92
  -> EWS XML Elements - http://msdn.microsoft.com/en-us/library/aa580675%28v=EXCHG.80%29.aspx
Packit 700f92
Packit 700f92
===========================
Packit 700f92
Packit 700f92
5. Address book
Packit 700f92
Packit 700f92
Fetching Global address list
Packit 700f92
Packit 700f92
Use OAB (Offline Address Book) for caching the GAL locally into Evolution.
Packit 700f92
Packit 700f92
While caching happens in the background, until the cache is setup, use 
Packit 700f92
Resolve Names.
Packit 700f92
Packit 700f92
Resolve names operation
Packit 700f92
   http://msdn.microsoft.com/en-us/library/aa563518(v=EXCHG.80).aspx
Packit 700f92
Packit 700f92
Unresolved Entry
Packit 700f92
   http://msdn.microsoft.com/en-us/library/aa581054(v=EXCHG.80).aspx
Packit 700f92
Packit 700f92
============================
Packit 700f92
Packit 700f92
6. Fetching Public folders
Packit 700f92
Packit 700f92
Needs an additional header not mentioned in the documentation
Packit 700f92
Include the following header for Exchange 2007, 
Packit 700f92
<soap:Header>
Packit 700f92
  <t:RequestServerVersion Version="Exchange2007_SP1"/>
Packit 700f92
</soap:Header>
Packit 700f92
Packit 700f92
What's the equivalent for Exchange 2010? No server to test as yet.
Packit 700f92
Packit 700f92
=============================
Packit 700f92
 
Packit 700f92
7. Ideas yet to research on
Packit 700f92
Packit 700f92
== Mailer ==
Packit 700f92
Packit 700f92
Following the IMAPX backend, we could make EWS asynchronous in the same manner
Packit 700f92
prioritizing the client requests.
Packit 700f92
Packit 700f92
Separate out the prioritizing client requests and make it common to all 
Packit 700f92
providers.
Packit 700f92
Packit 700f92
Is pipe-ling requests possible?
Packit 700f92
Packit 700f92
Packit 700f92
Packit 700f92
== Calendar ==
Packit 700f92
Packit 700f92
Make the operations similar to mailer. Handle all the operations Offline and 
Packit 700f92
later sync it with server.
Packit 700f92
Packit 700f92
Handle all the offline operations in a single class, say CalBackendOffline.
Packit 700f92
Cache needs to be extended to be able to give the list of un-syncronized 
Packit 700f92
(local->server) items. We could handle the error messages for the 
Packit 700f92
un-synchronized calendar items (eg: meeting created) by optionally displaying
Packit 700f92
an error dialog and also providing a visual cue in the form of an icon.
Packit 700f92
Packit 700f92
The error can also be logged per event. Eg: Opening the meeting can show the 
Packit 700f92
actual error in the meeting editor in a non-intrusive manner. This very similar
Packit 700f92
to how mailer handles the un-sent mails in OutBox showing the error messages.
Packit 700f92
Packit 700f92
Improve FreeBusy performance by fetching free/busy information for all users at
Packit 700f92
a single stretch if the server supports it. FreeBusy requests should be 
Packit 700f92
cancellable. Provide EDS ECal apis for the same.
Packit 700f92
Packit 700f92
Packit 700f92
== Address book ==
Packit 700f92
Packit 700f92
Ensure the auto-completion performance doesn't fade while caching the contacts
Packit 700f92
or fetching deltas.
Packit 700f92
Packit 700f92
other improvement areas?
Packit 700f92
Packit 700f92
Packit 700f92
== Single Connection (to be analyzed) ==
Packit 700f92
Packit 700f92
Are multiple connections allowed on exchange servers or is there any limit ?
Packit 700f92
Since address-book, calendar, mailer are run as separate processes we would 
Packit 700f92
require three connections if connections are not shared.
Packit 700f92
Packit 700f92
If we want to use a single connection, we might need to write ews connection 
Packit 700f92
layer as a separate process and let mailer,e-address-book-factory, 
Packit 700f92
e-calendar-factory send the requests to it.