Kalender-Push mit OpenExchange
Die Kalenderintegration in der Fachschaft ist seit längerer Zeit nicht funktionsfähig. Ich habe mal angefangen das zu debuggen:
principal.calendars() führt einen PROPFIND-Request nach DAV::calendar-home-set
auf der URL /principals/users/<UID>
aus. Dieser bricht mit caldav.lib.error.PropfindError: 405 Not Allowed
ab. Mir scheint der Request soweit Standard-konform. Warum das bei OpenExchange nicht geht, weiß ich nicht, allerdings funktioniert das Principal-Object mit der URL /caldav/
ohne Probleme. Das ist dann wiederum nicht Standard-konform.
Ich sehe zwei Lösungsansätze:
- Das Principal-Objekt (nur!) bei OpenExchange statt mit
client.principal()
mitPrincipal(client, client.url)
initialisieren. - Die Liste der Kalender anders abrufen. vdirsyncer macht das z.B. mit einem PROPFIND-Request nach
DAV::resourcetype
auf die Basis-URL mit Tiefe 1. DieCalendar
-Objekte kann man dann mit den URLs aus der Response instanzieren und wie gehabt verwenden. Das sähe dann etwa wie folgt aus.
client.propfind(client.url, b'<d:propfind xmlns:d="DAV:"><d:prop><d:resourcetype/></d:prop><d:prop><d:displayname/></d:prop></d:propfind>', depth='1')
Variante 1 wäre sehr einfach. Variante 2 hätte den Vorteil, dass sie vmtl. auch mit anderen Servern als OpenExchange funktioniert.
Meinungen, was sinnvoller ist?