1
0
mirror of https://github.com/moparisthebest/davmail synced 2024-08-13 16:53:51 -04:00

Fix for iCal: send etag on GET and HEAD requests

git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@586 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
mguessan 2009-06-15 16:04:04 +00:00
parent 10cad53224
commit dcb04dd590

View File

@ -235,24 +235,18 @@ public class CaldavConnection extends AbstractConnection {
String etag = request.getHeader("if-match");
String noneMatch = request.getHeader("if-none-match");
ExchangeSession.EventResult eventResult = session.createOrUpdateEvent(request.getExchangeFolderPath(), eventName, request.getBody(), etag, noneMatch);
if (eventResult.etag != null) {
HashMap<String, String> responseHeaders = new HashMap<String, String>();
responseHeaders.put("ETag", eventResult.etag);
sendHttpResponse(eventResult.status, responseHeaders, null, "", true);
} else {
sendHttpResponse(eventResult.status);
}
sendHttpResponse(eventResult.status, buildEtagHeader(eventResult.etag), null, "", true);
} else if (request.isDelete()) {
int status = session.deleteEvent(request.getExchangeFolderPath(), eventName);
sendHttpResponse(status);
} else if (request.isGet()) {
ExchangeSession.Event event = session.getEvent(request.getExchangeFolderPath(), eventName);
sendHttpResponse(HttpStatus.SC_OK, null, "text/calendar;charset=UTF-8", event.getICS(), true);
sendHttpResponse(HttpStatus.SC_OK, buildEtagHeader(event.getEtag()), "text/calendar;charset=UTF-8", event.getICS(), true);
} else if (request.isHead()) {
// test event
session.getEvent(request.getExchangeFolderPath(), eventName);
sendHttpResponse(HttpStatus.SC_OK, null, "text/calendar;charset=UTF-8", (byte[]) null, true);
ExchangeSession.Event event = session.getEvent(request.getExchangeFolderPath(), eventName);
sendHttpResponse(HttpStatus.SC_OK, buildEtagHeader(event.getEtag()), "text/calendar;charset=UTF-8", (byte[]) null, true);
} else {
sendUnsupported(request);
}
@ -262,6 +256,16 @@ public class CaldavConnection extends AbstractConnection {
}
}
protected HashMap<String, String> buildEtagHeader(String etag) {
if (etag != null) {
HashMap<String, String> etagHeader = new HashMap<String, String>();
etagHeader.put("ETag", etag);
return etagHeader;
} else {
return null;
}
}
protected void appendEventsResponses(CaldavResponse response, CaldavRequest request, List<ExchangeSession.Event> events) throws IOException {
int size = events.size();
int count = 0;