[dev] WebDAV/CalDAV integration - first questions

Jan Schneider jan at horde.org
Fri Sep 25 10:49:24 UTC 2009


Zitat von Evert Pot <evertpot at gmail.com>:

>
> On 2009-09-23, at 12:18 PM, Jan Schneider wrote:
>
>> Zitat von Evert Pot <evertpot at gmail.com>:
>>
>>> Hey guys,
>>>
>>> =Base url=
>>>
>>> I was told the best place to integrate CalDAV, was through rpc.php.
>>>
>>> Looking at that file, it appears it is almost completely based on  
>>> autodetection.
>>> I think it's preferable to have a dedicated url for CalDAV support.
>>>
>>> I can either make the base url something like:
>>>
>>> /horde/rpc.php/caldav/
>>>
>>> or:
>>>
>>> /horde/caldav.php/
>>>
>>> Any preferences?
>>
>> Why? WebDAV detection works fine, and if CalDAV is going to replace  
>> WebDAV, I see no reason why this shouldn't keep working.
>
> Largly its a downright aversion against magic behaviour. In this  
> case specifically, I'm worried about certain requests triggering one  
> of the other RPC's.

It worked fine for the last few years, and I don't see why it should  
stop working. If it breaks at some point, we can always change it later.

> It's also not very clear to me how GET requests are intercepted. How  
> is this currently done?

By detecting PATH_INFO requests.

> Lastly, the entire response appears to be buffered and sent as a  
> string from the default rpc.php. I'd like to avoid this and use php  
> streams instead. This can be a big memory saver. I've been able to  
> up/download up to 2GB files without triggering a memory_limit  
> setting of 64MB.

That's nice to have, but not a show stopper. Beside that, everything  
can be changed for H4 as needed. So if using streams is really an  
important concern for you, you can change Horde_Rpc to support them.  
We already did this for some other libraries where it made sense.

>> I'm not sure if this will work, because tasks and calendars are  
>> indeed provided by completely different applications. We might  
>> allow Kronolith to proxy CalDAV task access to Nag though.
>>
>> For the directory structure, I still prefer to keep BC with the  
>> current structure we have that would be:
>> kronolith/username/calendarid/eventid
>>
>> If you don't want this to be the default structure for SabreDAV,  
>> then we need some hook/plugin to provide a different structure with  
>> our backend.
>
> From the SabreDAV library there is some flexibility to setup  
> different structures. Just for my own sanity I will start off with a  
> structure that is the easiest to understand. Based on what I learned  
> at that point, we can look at this again.
>
> My point of view is that there is no need for applications  
> (kronolith, nag) to inject new paths in CalDAV structure, instead  
> they could just register themselves as a new CalDAV-enabled backend.  
> I plan to hide as much of the protocol as possible from the  
> backends, if we need support for multiple collections of calendars  
> per user (which is what this is really about) it could imply that  
> the various backends need to be much more aware of the structure as  
> needed; which is something I'd like to avoid.
>
> Regardless I will start off simple, and just with kronolith. Once  
> we're there it will be easier for me to figure out how multiple  
> directory structures work, or articulate why it will be  
> inconvenient. Just keep an open mind, and so will I =)
>
> Evert
>
>



Jan.

-- 
Do you need professional PHP or Horde consulting?
http://horde.org/consulting/



More information about the dev mailing list