mirror of
https://github.com/moparisthebest/davmail
synced 2025-02-28 09:21:49 -05: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:
parent
10cad53224
commit
dcb04dd590
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user