RAA - corporatetime

corporatetime / 0.4.9

Short description: Ruby/CorporateTime
Category: Library/Calendar
Status: beta
Created: 2002-12-31 15:00:00 GMT
Last update: 2006-05-25 19:52:57 GMT
Owner: Ian Macdonald (Projects of this owner)
Homepage: http://www.caliban.org/ruby/
Download: http://www.caliban.org/files/ruby/ruby-CorporateTime-0.4.9.tar.gz
License: GPL
Dependency:
None
Description:

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 9.0.4.2 (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.4.9:

A problem with all-day events in CTime::Agenda::Event#start_time= has been fixed.


Changes in 0.4.8:

CTime::Agenda#delete_event can now take an optional recurrence ID to delete a specific instance of a repeating event.

Many more fixes for working with CAPI v9 have been applied.

Some code clean-up work has been done.


Changes in 0.4.7:

Calling Agenda#get_events would convert its parameters to UTC if they responded to #gmtime, because #gmtime modifies its arguments in place. This has been fixed.


Changes in 0.4.6:

Exceptions caused by bad UTF-8 being returned by the calendar server in Event.parse_line are now caught.

Debugging output should go to STDERR, not STDOUT.


Changes in 0.4.5:

CTime::Agenda#Reply has been added. This is experimental and can be used only when compiled against CAPI v9.

More stringent escaping of Event object strings is now performed.

Many bug fixes and minor code changes for robustness were made.


Changes in 0.4.4:

RECURRENCE-ID is once again handled. Replacing a meeting involves using the original start time of the meeting as the recurrence ID, even if the start time is being changed.

Removal of attendees from events was not working properly with CAPI v9. This feature is unavailable in earlier CAPI versions.


Changes in 0.4.3:

CTime::Agenda#get_event is now impemented for Oracle CAPI v9.

The code that handled RECURRENCE-ID has been removed, as this seemed to result in the inability to update existing events using their UID and CTime::Agenda#set_event.

Event objects that defined @attendees now have those attendees set when creating an event using CAPI v9.

CTime::Agenda::Event#duration_str has been fixed to emit a more clearly defined string. The previous format specifier was too loose.


Changes in 0.4.2:

@organiser is now an alias of @organizer for Event objects.

Various fixes have been made to the documentation.


Changes in 0.4.1:

CTime#connect, CTime#open_agenda, CTime::Agenda#get_event and CTime::Agenda#get_events can now be called with an optional block. For CTime#connect, the connection is yielded to the block. For CTime#open_agenda, the agenda is yielded. For CTime::Agenda#get_event and CTime::Agenda#get_events, each event in the returned array is yielded separately to the block.


Changes in 0.4.0:

The library has undergone quite a large rewrite to provide a more logical interface and clean up a lot of the ugly code. As a result, there are some changes to the API that will require minor changes to your code.

An exception is now thrown when CTime#quit is called multiple times.

A check is now performed to ensure that the parameter passed to CTime::Agenda#get_event is actually a string.

It's now possible to call CTime.new to instantiate a CTime object without actually connecting to a server. For compatibility with previous versions, you can still pass 3 parameters, in which case they will be silently passed to the new CTime#connect method. CTime#connect returns self.

The CTimeError exception class has been renamed CAPIError. When CTime#connect raises a a CAPIError, the exception message is now much more specific about why the connection attempt failed.

When CTime#designate fails, we now raise a DesignationError, not a CAPIError/CTimeError. We also raise a DesignationError when attempting to designate to an unknown user. The previous UnknownUserError exception has been dropped.

CTime objects no longer have @agendas attribute to track open agendas. This is no longer needed, because CTime#connect returns a CTime::Agenda object. Logically, this has resulted in the removal of CTime#close_agenda, which has been replaced by CTime::Agenda#close.

Other methods that logically relate to an agenda but operated on CTime objects now have a CTime::Agenda object as their receiver. These are CTime::Agenda#set_event, CTime::Agenda#delete_event, CTime::Agenda#get_event and CTime::Agenda#get_events.

CTime objects no longer have an @error attribute for tracking the status of the most recently attempted operation. Instead, an exception will be raised whenever something bad happens.

CTime objects no longer have a @capabilities attribute. Instead, CTime#capabilities has been implemented.

A new command line option, -c|--calendar, was added to the mycal example program for viewing someone else's agenda.


Changes in 0.3.4:

CTime#get_event has now been implemented. This takes a UID and returns an Array of Event objects associated with that UID.


Changes in 0.3.3:

When Event objects were initialised, the start_time attribute was not correctly being converted to UTC when used by CTime#set_event. The end_time attribute suffered from the same problem, but was not used by CTime#set_event, making the problem less apparent.

Commas in the location, summary and description attributes of Event objects are now escaped with a backslash. Otherwise, the server will complain when passed such an object by CTime#set_event.



Changes in 0.3.2:

Start and end time parameters to CTime#get_events may now be of any class that responds to the strftime method. The same applies to the start time parameter passed to Event.new. Previously, each of these parameters could only be a String.

Start and end time parameters to CTime#get_events are now automatically converted to UTC, if they respond to either the gmtime or new_offset methods. The same applies to the start time parameter passed to Event.new.

The example programs have been updated and simplified to reflect these changes.


Changes in 0.3.1:

Event objects now have a new attribute, @ics, which contains the raw iCalendar stream for that object.

UTF-8 to Latin 1 conversion, introduced in 0.3.0, has been fixed.

Event#inspect is now Event#to_s. Event#inspect has been rewritten to return the raw iCalendar stream for the associated event.


Changes in 0.3.0:

Alarms are now ignored when parsing events. Specifically, an alarm's description would overwrite the event's description and render this useless.

CTime#get_events now takes an optional third parameter. If set to false, the raw iCal stream will be returned instead of an array of event objects.

Event object values are now automatically converted from UTF-8 to Latin 1.


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.

Versions: [0.4.9 (2006-05-25)] [0.4.8 (2005-04-14)] [0.4.7 (2005-03-19)] [0.4.6 (2005-02-26)] [0.4.5 (2005-02-09)] [0.4.4 (2005-01-29)] [0.4.3 (2005-01-25)] [0.4.2 (2005-01-14)] [0.4.1 (2004-12-14)] [0.4.0 (2004-12-10)] [0.3.4 (2004-11-21)] [0.3.3 (2004-11-12)] [0.3.2 (2004-11-07)] [0.3.1 (2004-11-02)] [0.3.0 (2004-11-02)] [0.2.3 (2004-09-21)] [0.2.2 (2004-05-26)] [0.2.1 (2004-05-13)] [0.2.0 (2004-04-21)] [0.1.4 (-)]

Edit this project (for project owner)

back to RAA top