Hi chaps/esses .. :)
I've integrated sabredav into my application, and browser module is working just fine. i can authenticate, list, get, download ics files using my custom backends.
now, when I try to add a caldav account in thunderbird, it sais that caldav is not currently available. After looking the wireshark dump log, I noticed that my caldav server is returning '400 Bad request' with the message '
Empty XML document sent'.here is the req/res:
curl --request REPORT --user user:pass
--data "<?xml version="1.0" encoding="UTF-8"?>
<C:calendar-multiget xmlns:D="DAV:"
xmlns:C="urn:ietf:params:xml:ns:caldav"> <D:prop>
<D:getetag/> <C:calendar-data/> </D:prop>
<D:href> /caldav/calendars/104/mis.ics/117-42095.ics
</D:href> <D:href>
/caldav/calendars/104/mis.ics/117-42068.ics </D:href>
<D:href> /caldav/calendars/104/mis.ics/117-42049.ics
</D:href> <D:href>
/caldav/calendars/104/mis.ics/117-42048.ics </D:href>
<D:href> /caldav/calendars/104/mis.ics/117-41998.ics
</D:href> </C:calendar-multiget>" http://server/caldav/calendars/104/mis.ics
<?xml version="1.0" encoding="utf-8"?>
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:sabredav-version>2.0.5</s:sabredav-version>
<s:exception>Sabre\DAV\Exception\BadRequest</s:exception>
<s:message>Empty XML document sent</s:message>
</d:error>
btw, ics files are returning 200 response and are properly formatted.
thunderbird is first sending propfind request, and get response 207 with this xml:
<?xml
version="1.0"
encoding="utf-8"
?>
<d:multistatus
xmlns:d="DAV:"
xmlns:s="http://sabredav.org/ns"
xmlns:cal="urn:ietf:params:xml:ns:caldav"
xmlns:cs="http://calendarserver.org/ns/">
<d:response>
<d:href>
/caldav/calendars/104/mis.ics/
</d:href>
<d:propstat>
<d:prop>
<d:resourcetype>
<d:collection/>
<cal:calendar/>
</d:resourcetype>
</d:prop>
<d:status>
HTTP/1.1 200 OK
</d:status>
</d:propstat>
</d:response>
<d:response>
<d:href>
/caldav/calendars/104/mis.ics/117-41998.ics
</d:href>
<d:propstat>
<d:prop>
<d:resourcetype/>
<d:getetag>
"f2b8b550d5c37f951879ec6735ebc52b"
</d:getetag>
<d:getcontenttype>
text/calendar; charset=utf-8; component=vevent
</d:getcontenttype>
</d:prop>
<d:status>
HTTP/1.1 200 OK
</d:status>
</d:propstat>
</d:response>
<d:response>
<d:href>
/caldav/calendars/104/mis.ics/117-42048.ics
</d:href>
<d:propstat>
<d:prop>
<d:resourcetype/>
<d:getetag>
"858aa993e9f0e809476a8a4b3f886c71"
</d:getetag>
<d:getcontenttype>
text/calendar; charset=utf-8; component=vevent
</d:getcontenttype>
</d:prop>
<d:status>
HTTP/1.1 200 OK
</d:status>
</d:propstat>
</d:response>
<d:response>
<d:href>
/caldav/calendars/104/mis.ics/117-42049.ics
</d:href>
<d:propstat>
<d:prop>
<d:resourcetype/>
<d:getetag>
"04dccb84c1ea9de69f4e52672550a86d"
</d:getetag>
<d:getcontenttype>
text/calendar; charset=utf-8; component=vevent
</d:getcontenttype>
</d:prop>
<d:status>
HTTP/1.1 200 OK
</d:status>
</d:propstat>
</d:response>
<d:response>
<d:href>
/caldav/calendars/104/mis.ics/117-42068.ics
</d:href>
<d:propstat>
<d:prop>
<d:resourcetype/>
<d:getetag>
"e42860d08d8d757503a4a459875fc8ab"
</d:getetag>
<d:getcontenttype>
text/calendar; charset=utf-8; component=vevent
</d:getcontenttype>
</d:prop>
<d:status>
HTTP/1.1 200 OK
</d:status>
</d:propstat>
</d:response>
<d:response>
<d:href>
/caldav/calendars/104/mis.ics/117-42095.ics
</d:href>
<d:propstat>
<d:prop>
<d:resourcetype/>
<d:getetag>
"bc0761a4864b537ccbafb087a320612e"
</d:getetag>
<d:getcontenttype>
text/calendar; charset=utf-8; component=vevent
</d:getcontenttype>
</d:prop>
<d:status>
HTTP/1.1 200 OK
</d:status>
</d:propstat>
</d:response>
</d:multistatus>
Does anyone have any idea what method I missed to implement? Any hint or help because i'm little bit lost in finding out what seems to be the problem here?