Implementation of an OpenChange backend (MAPIStore) as a connector to a CalDAV and CardDAV server. The main objective of this backend should be to act as an interface between OpenChange - which is an open-source Exchange server implementation - and our CalDAV/CardDAV server via Gearman. Therefore we need a MAPIStore implementation compiled as a Dynamic Shared Object (DSO) with the following requirements:
- Fetching contacts
- Storing (create, update) contacts
- Fetching calendars of an user
- Fetching calendar items (events, tasks)
- Storing (create, update) calendar items (events, tasks)
Because the final product should be a Dynamic Shared Object, we don't impose a restriction on the programming language to achieve our requirements. C/C++ would be an option since the example shown in the MAPIStore Dev Guide is written in C and there are language bindings for Gearman available.
It's not necessary to implement all operations that MAPIStore supports - OpenChange allows you to define a specific backend for each top-level directory. We only need implementations for Calendars, Tasks and Contacts. The backend should therefore NOT include handling Mails and Files/Notes, etc.
Every atomic operation for these top-level directories has to be implemented.
This should include
* fetching contacts
* creating contacts
* updating contacts
* fetching calendars
* fetching events
* creating events
* updating events
* fetching tasks
* creating tasks
* updating tasks
These operations have to send/receive data via a Gearman client to/from a running Gearman worker. So for every operation, a function/callback has to be defined, that sends data to the Gearman worker or receives data from the worker. The data should be sent as a *JSON-encoded string*.
The final product *MUST* include:
- MAPIStore backend implementation as a Dynamic Shared Object (DSO) that can be linked into an OpenChange server.
- Option to configure Gearman servers.
- Implementations of all necessary operations (see above) by sending/receiving data (calendars, calendar items (events, tasks), contacts) via a Gearman client and therefore acting as an interface to our CalDAV/CardDAV server.
- Brief installation/build description for the Dynamic Shared Object to work with OpenChange. (including how to set the Gearman servers (hosts/ports))
- List of implemented operations with a short description
- List of all Gearman functions (probably one per operation) with name, parameters (Datatype/JSON-format) and response/return-value (Datatype/JSON-format)
The following resources should prove useful:
* OpenChange's MAPIStore Development Guide: [url removed, login to view]
* SOGo implementation of a MAPIStore backend (source code in Objective C): [url removed, login to view]
- especially the file MAPIStoreSOGo.m ([url removed, login to view]) with the entry point for the MAPIStore SOGo backend (line 1509).
* Gearman documentation: [url removed, login to view]
7 freelancers are bidding on average $3225 for this job
I am a strong experienced .NET developer. We can try to build a few thing to test before accepting project. looking forward to hearing from you Many thanks, Irvin