CalDAV calendar component in Lucee ColdFusion
Budget: $30 – $250 USD
I need a CalDAV component ( caldav.cfc ) written in Lucee ColdFusion that will interact with a CalDAV server to do the following
1. retrieve all calendars
2. retrieve all events per calendar
3. add event(s) to a calendar
4. delete event(s) from a calendar
5. update event(s) in a calendar
6. all retrieved events need to be parsed into a JSON format
7. when adding/editing events need to accept a JSON format as input
An example of the expected flow
===========================
// instantiation
var cdc = new Caldav(
server_url = "https://pxx-caldav.icloud.com/USER_ID/calendars",
username = "email",
password = "ABC123CDF"
);
----------------
// get all calendars
var calendars = cdc.getCalendars();
// => output
[
{ id:123, name:"Home Calendar", ... },
{ id:456, name:"John's Calendar", ... },
...
]
----------------
// add event to calendar
var event = {
id: 136,
start_date: "2022-04-21T10:30:00-04:00",
exp_date: "2022-04-21T12:00:00-04:00",
name: "Meeting with John Doe",
room: "Vxxt4HyoqBhQFXCGMBT4RC",
timezone: "US/Eastern"
};
cdc.setCalendarId(123);
cdc.addEvent(event);
----------------
// remove event from calendar
cdc.setCalendarId(123);
cdc.removeEventById(136);
----------------
// get event(s)
cdc.setCalendarId(123);
cdc.getEvents({
start_date: "2022-04-21T00:00:00-04:00",
exp_date: "2022-04-22T00:00:00-04:00",
});
// => outout
[
{
id:136,
calendar_id:123,
name:"Meeting with John Doe",
start_date:"2022-04-21T10:30:00-04:00',
exp_date:"2022-04-21T12:00:00-04:00",
...
},
{ id:137, calendar_id:123, name:"Breakfast Meeting", ... },
...
]
----------------
// get event by id
cdc.setCalendarId(123);
cdc.getEventById(136);
// => same output as from cfc.getEvents()
........
==> other methods are to be used in the similar fashion!
***** Side Note ******
==================
I would prefer for the component to be written in pure Lucee ColdFusion, however, I am OK with using the main functionality to be written in java as long as it compiles into a single .JAR file.
1. retrieve all calendars
2. retrieve all events per calendar
3. add event(s) to a calendar
4. delete event(s) from a calendar
5. update event(s) in a calendar
6. all retrieved events need to be parsed into a JSON format
7. when adding/editing events need to accept a JSON format as input
An example of the expected flow
===========================
// instantiation
var cdc = new Caldav(
server_url = "https://pxx-caldav.icloud.com/USER_ID/calendars",
username = "email",
password = "ABC123CDF"
);
----------------
// get all calendars
var calendars = cdc.getCalendars();
// => output
[
{ id:123, name:"Home Calendar", ... },
{ id:456, name:"John's Calendar", ... },
...
]
----------------
// add event to calendar
var event = {
id: 136,
start_date: "2022-04-21T10:30:00-04:00",
exp_date: "2022-04-21T12:00:00-04:00",
name: "Meeting with John Doe",
room: "Vxxt4HyoqBhQFXCGMBT4RC",
timezone: "US/Eastern"
};
cdc.setCalendarId(123);
cdc.addEvent(event);
----------------
// remove event from calendar
cdc.setCalendarId(123);
cdc.removeEventById(136);
----------------
// get event(s)
cdc.setCalendarId(123);
cdc.getEvents({
start_date: "2022-04-21T00:00:00-04:00",
exp_date: "2022-04-22T00:00:00-04:00",
});
// => outout
[
{
id:136,
calendar_id:123,
name:"Meeting with John Doe",
start_date:"2022-04-21T10:30:00-04:00',
exp_date:"2022-04-21T12:00:00-04:00",
...
},
{ id:137, calendar_id:123, name:"Breakfast Meeting", ... },
...
]
----------------
// get event by id
cdc.setCalendarId(123);
cdc.getEventById(136);
// => same output as from cfc.getEvents()
........
==> other methods are to be used in the similar fashion!
***** Side Note ******
==================
I would prefer for the component to be written in pure Lucee ColdFusion, however, I am OK with using the main functionality to be written in java as long as it compiles into a single .JAR file.