CorporateTime is a proprietary calendar server system produced by Steltor/Oracle.
Ruby/CorporateTime is a Ruby language extension that serves as an interface to the CorporateTime Calendar API (CAPI). Its purpose is to allow interaction with CorporateTime servers via the Ruby programming language.
In order to use this software, you should have the CAPI libraries installed on your computer. These can be obtained from Steltor/Oracle. To build from source, you'll also need the ctapi.h header file, once again available from Steltor.
Ruby/CorporateTime has been verified to work with version 2.0 of the CAPI libraries, and with Steltor CorporateTime server 5.2 and 5.4, plus Oracle CorporateTime server 220.127.116.11 (standalone). Both the client and the server were running Linux in these tests.
The 'alpha' status of Ruby/CorporateTime should be taken to mean that the calling interface to methods may change, not that the functionality is barely implemented or that the code is given to crashing. On the contrary, it's quite useable and the archive comes with several demonstration programs.
Changes in 0.2.3:
Event setting was still broken. It is now truly fixed.
Changes in 0.2.2:
Event setting was broken in version 0.2.0. This version fixes that bug.
Changes in 0.2.1:
The event parser has been fixed to handle DATE values. It returns start_time and end_time at the beginning/end of the day in localtime. Also, the case of a missing end_time has been fixed, since this is actually legal.
The event description and summary are now unescaped during parsing.
Changes in 0.2.0:
This release owes many thanks to my colleague at Google, Kevin McCarthy. He has revamped a lot of the interfaces.
A compatibility layer has been added to work with different versions of the CAPI.
The CAPIHandle object is now wrapped in the Agenda object returned by ct_open_agenda. The Agenda object should now be passed to close_agenda.
A bug was fixed in close_agenda.
ct_get_events has been made more efficient.
New Event and Attendee classes have been created. iCal stream parsing has been moved into the Event class.
Changes in 0.1.4:
A warning issued when CTime objects were instantiated in Ruby 1.8.0 is now averted.
Changes in 0.1.3:
Ruby/CorporateTime now works with CAPI 2.5.1 from Oracle. Making this work revealed a nasty bug in previous versions, whereby CAPI_DestroyStreams() would be called before the event stream had been parsed. This has been fixed.
CTime#get_events is now back to taking just two parameters. A call to this method will attempt to fetch the full list of associated properties. If this is unsuccessful (due to restricted permission on the server), the underlying C code will make a second call to CAPI_FetchEventsByRange(),
requesting just the start and end times of the event, plus the duration.
CTime::Event objects now have the extra attribute @end. The reason for this addition is that Oracle has broken backwards compatibility for CAPI_FetchEventsByRange() in version 2.5 of the CAPI. Calls to previous versions returned the duration of the event in the DURATION iCalendar attribute, but the newer version dispenses with DURATION in favour of DTEND.
As a consequence, CTime#get_events with CAPI 2.5 and later will set @end, but not @duration, whereas it will set @duration, but not @end with previous versions. It is hoped to handle this transparently in the future, so that both @duration and @end are set, regardless of which version of
the CAPI is used.
Note that CTime#set_event is unaffected by this change. @duration should be set for the object passed to the method, regardless of the version of the CAPI you are using.
All-day events are now handled a little more gracefully when using the CTime#get_events method. When an all-day event is found, both @start and @end will be set to the same value. However, this string does not contain the usual time specification of 'yyyymmddThhmmssZ', but instead a simple date specification of 'yyyymmdd'.
It is not yet possible to use CTime#set_event to set an all-day event.
Finally, the calendar stream is printed a little more legibly when running in debug mode.
Changes in 0.1.2:
CTime#get_events now takes a third parameter, which is a constant that determines whether a full property list should be obtained for each Event object. The access level of some events prevents the full property list from being retrieved. In these cases, CTime::RESTRICTED_PROPERTIES should be used. In all other cases, CTime::ALL_PROPERTIES is appropriate.
Changes in 0.1.1:
When fetching events using the CTime#get_events method, the stream now properly decodes MIME quoted-printable strings, which means you no longer have to manually do this for instance variables such as @summary, @description and @location.