C CMake Shell
Switch branches/tags
EVOLUTION_EWS_3_25_3 EVOLUTION_EWS_3_25_2 EVOLUTION_EWS_3_25_1 EVOLUTION_EWS_3_24_3 EVOLUTION_EWS_3_24_2 EVOLUTION_EWS_3_24_1 EVOLUTION_EWS_3_24_0 EVOLUTION_EWS_3_23_92 EVOLUTION_EWS_3_23_91 EVOLUTION_EWS_3_23_90 EVOLUTION_EWS_3_23_4 EVOLUTION_EWS_3_23_3 EVOLUTION_EWS_3_23_2 EVOLUTION_EWS_3_23_1 EVOLUTION_EWS_3_22_6 EVOLUTION_EWS_3_22_5 EVOLUTION_EWS_3_22_4 EVOLUTION_EWS_3_22_3 EVOLUTION_EWS_3_22_2 EVOLUTION_EWS_3_22_1 EVOLUTION_EWS_3_22_0 EVOLUTION_EWS_3_21_92 EVOLUTION_EWS_3_21_91 EVOLUTION_EWS_3_21_90 EVOLUTION_EWS_3_21_4 EVOLUTION_EWS_3_21_3 EVOLUTION_EWS_3_21_2 EVOLUTION_EWS_3_21_1 EVOLUTION_EWS_3_20_5 EVOLUTION_EWS_3_20_4 EVOLUTION_EWS_3_20_3 EVOLUTION_EWS_3_20_2 EVOLUTION_EWS_3_20_1 EVOLUTION_EWS_3_20_0 EVOLUTION_EWS_3_19_92 EVOLUTION_EWS_3_19_91 EVOLUTION_EWS_3_19_90 EVOLUTION_EWS_3_19_4 EVOLUTION_EWS_3_19_3 EVOLUTION_EWS_3_19_2 EVOLUTION_EWS_3_19_1 EVOLUTION_EWS_3_18_5 EVOLUTION_EWS_3_18_4 EVOLUTION_EWS_3_18_3 EVOLUTION_EWS_3_18_2 EVOLUTION_EWS_3_18_1 EVOLUTION_EWS_3_18_0 EVOLUTION_EWS_3_17_92 EVOLUTION_EWS_3_17_91 EVOLUTION_EWS_3_17_90 EVOLUTION_EWS_3_17_4 EVOLUTION_EWS_3_17_3 EVOLUTION_EWS_3_17_2 EVOLUTION_EWS_3_17_1 EVOLUTION_EWS_3_16_5 EVOLUTION_EWS_3_16_4 EVOLUTION_EWS_3_16_3 EVOLUTION_EWS_3_16_2 EVOLUTION_EWS_3_16_1 EVOLUTION_EWS_3_16_0 EVOLUTION_EWS_3_15_92 EVOLUTION_EWS_3_15_91 EVOLUTION_EWS_3_13_90 EVOLUTION_EWS_3_13_10 EVOLUTION_EWS_3_13_9 EVOLUTION_EWS_3_13_8 EVOLUTION_EWS_3_13_7 EVOLUTION_EWS_3_13_6 EVOLUTION_EWS_3_13_5 EVOLUTION_EWS_3_13_4 EVOLUTION_EWS_3_13_3 EVOLUTION_EWS_3_13_2 EVOLUTION_EWS_3_13_1 EVOLUTION_EWS_3_12_11 EVOLUTION_EWS_3_12_10 EVOLUTION_EWS_3_12_9 EVOLUTION_EWS_3_12_8 EVOLUTION_EWS_3_12_7 EVOLUTION_EWS_3_12_6 EVOLUTION_EWS_3_12_5 EVOLUTION_EWS_3_12_4 EVOLUTION_EWS_3_12_3 EVOLUTION_EWS_3_12_2 EVOLUTION_EWS_3_12_1 EVOLUTION_EWS_3_12_0 EVOLUTION_EWS_3_11_92 EVOLUTION_EWS_3_11_91 EVOLUTION_EWS_3_11_90 EVOLUTION_EWS_3_11_5 EVOLUTION_EWS_3_11_4 EVOLUTION_EWS_3_11_3 EVOLUTION_EWS_3_11_2 EVOLUTION_EWS_3_11_1 EVOLUTION_EWS_3_10_4 EVOLUTION_EWS_3_10_3 EVOLUTION_EWS_3_10_2 EVOLUTION_EWS_3_10_1 EVOLUTION_EWS_3_10_0 EVOLUTION_EWS_3_9_92 EVOLUTION_EWS_3_9_91
Nothing to show

README

========================

1. BUILD

   $ cd .../sources/evolution-ews
   $ mkdir build
   $ cd build
   $ cmake -G "Unix Makefiles" \
           -DCMAKE_INSTALL_PREFIX=/opt/evolution \
           -DCMAKE_BUILD_TYPE=Release \
           ..
   $ make -j
   $ make -j install

Run `cmake --help` to get list of available generators (the -G argument)
on your platform.

========================

2. Test Suite

Pre-requisites to launch the test suite.
Export the following environmental variables for your test suite to run.

EWS_TEST_USERNAME
EWS_TEST_PASSWORD
EWS_TEST_EMAIL
EWS_TEST_URI

   $ make check

=========================

3. Autodiscover reference

The Autodiscover service provides the configuration information necessary to 
create a connection to an Exchange server. The Autodiscover service provides 
a mechanism that allows you to use “plain old XML” (POX) messages — that is, 
messages that consist solely of XML payloads without any enclosing SOAP 
envelopes — to locate the settings that a client application must have in 
order to connect to Exchange.

Currently the test suite uses autodiscovery to fetch the url to connect to,
using your username and email provided.

Reference:
http://msdn.microsoft.com/en-us/library/aa581522.aspx

The ASUrl (POX) element contains the url. Use this for all subsequent requests
to your Exchange server.

A typical ASUrl looks like this,
https://server_ip/EWS/Exchange.asmx

==========================

4. URLs

  -> Development overview - http://msdn.microsoft.com/en-us/library/cc535017%28v=EXCHG.80%29.aspx

  -> Autodiscover reference - http://msdn.microsoft.com/en-us/library/aa581522.aspx

  -> EWS XML Elements - http://msdn.microsoft.com/en-us/library/aa580675%28v=EXCHG.80%29.aspx

===========================

5. Address book

Fetching Global address list

Use OAB (Offline Address Book) for caching the GAL locally into Evolution.

While caching happens in the background, until the cache is setup, use 
Resolve Names.

Resolve names operation
   http://msdn.microsoft.com/en-us/library/aa563518(v=EXCHG.80).aspx

Unresolved Entry
   http://msdn.microsoft.com/en-us/library/aa581054(v=EXCHG.80).aspx

============================

6. Fetching Public folders

Needs an additional header not mentioned in the documentation
Include the following header for Exchange 2007, 
<soap:Header>
  <t:RequestServerVersion Version="Exchange2007_SP1"/>
</soap:Header>

What's the equivalent for Exchange 2010? No server to test as yet.

=============================
 
7. Ideas yet to research on

== Mailer ==

Following the IMAPX backend, we could make EWS asynchronous in the same manner
prioritizing the client requests.

Separate out the prioritizing client requests and make it common to all 
providers.

Is pipe-ling requests possible?



== Calendar ==

Make the operations similar to mailer. Handle all the operations Offline and 
later sync it with server.

Handle all the offline operations in a single class, say CalBackendOffline.
Cache needs to be extended to be able to give the list of un-syncronized 
(local->server) items. We could handle the error messages for the 
un-synchronized calendar items (eg: meeting created) by optionally displaying
an error dialog and also providing a visual cue in the form of an icon.

The error can also be logged per event. Eg: Opening the meeting can show the 
actual error in the meeting editor in a non-intrusive manner. This very similar
to how mailer handles the un-sent mails in OutBox showing the error messages.

Improve FreeBusy performance by fetching free/busy information for all users at
a single stretch if the server supports it. FreeBusy requests should be 
cancellable. Provide EDS ECal apis for the same.


== Address book ==

Ensure the auto-completion performance doesn't fade while caching the contacts
or fetching deltas.

other improvement areas?


== Single Connection (to be analyzed) ==

Are multiple connections allowed on exchange servers or is there any limit ?
Since address-book, calendar, mailer are run as separate processes we would 
require three connections if connections are not shared.

If we want to use a single connection, we might need to write ews connection 
layer as a separate process and let mailer,e-address-book-factory, 
e-calendar-factory send the requests to it.