Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Reset the connection status in CalDAV and add GetUserPrincipal
authorSteve Brokenshire <sbrokenshire@xestia.co.uk>
Thu, 3 Mar 2016 03:49:22 +0000 (03:49 +0000)
committerSteve Brokenshire <sbrokenshire@xestia.co.uk>
Thu, 3 Mar 2016 03:49:22 +0000 (03:49 +0000)
source/objects/CalDAV/CalDAV.cpp

index 6e1d0e6..ea578a9 100644 (file)
@@ -295,10 +295,89 @@ CalDAVServerSupport CalDAV::GetServerSupport(){
                        
        }
        
+       // Reset the connection status.
+       
+       curl_easy_setopt(ConnectionHandle, CURLOPT_CUSTOMREQUEST, NULL);
+       
        return ServerStatus;
        
 }
 
+string CalDAV::GetUserPrincipal(){
+       
+       string CurrentUserPrincipal = "";
+       string UserPrincipalRequest = "";
+       CalDAVSendData UserPrincipalSendData;
+       
+       UserPrincipalRequest = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+       "<d:propfind xmlns:d=\"DAV:\">\n"
+       " <d:prop>\n"
+       "  <d:current-user-principal />\n"
+       " </d:prop>\n"
+       "</d:propfind>";
+       
+       UserPrincipalSendData.readptr = &UserPrincipalRequest;
+       UserPrincipalSendData.sizeleft = UserPrincipalRequest.size();
+       
+       // Setup the header.
+       
+       struct curl_slist *UserPrincipalRequestHeader = NULL;
+       
+       UserPrincipalRequestHeader = curl_slist_append(UserPrincipalRequestHeader, "Depth: 0");
+       UserPrincipalRequestHeader = curl_slist_append(UserPrincipalRequestHeader, "Prefer: return-minimal");
+       UserPrincipalRequestHeader = curl_slist_append(UserPrincipalRequestHeader, "Content-Type: application/xml; charset=utf-8");
+       
+       curl_easy_setopt(ConnectionHandle, CURLOPT_HTTPHEADER, UserPrincipalRequestHeader);
+
+       curl_easy_setopt(ConnectionHandle, CURLOPT_CUSTOMREQUEST, "PROPFIND");
+       curl_easy_setopt(ConnectionHandle, CURLOPT_UPLOAD, 1L);
+       curl_easy_setopt(ConnectionHandle, CURLOPT_READDATA, &UserPrincipalSendData);
+       curl_easy_setopt(ConnectionHandle, CURLOPT_READFUNCTION, CalDAVSend);
+       
+       // Process the data.
+       
+       ServerData.clear();
+       ServerHeader.clear();
+       
+       CURLcode ServerResult = curl_easy_perform(ConnectionHandle);
+       
+       // Set the results.
+       
+       if (ServerResult == CURLE_OK){
+               ConnectionServerResult.Result = CALDAVQUERYRESULT_OK;
+       } else {
+               ConnectionServerResult.Result = CALDAVQUERYRESULT_SERVERERROR;          
+       }
+       ConnectionServerResult.Code = ServerResult;
+       curl_easy_getinfo(ConnectionHandle, CURLINFO_RESPONSE_CODE, &ConnectionServerResult.HTTPCode);
+       
+       if (ServerResult != CURLE_OK){
+               
+               return CurrentUserPrincipal;
+               
+       }
+       
+       // Process the User Principal from the ServerData.
+
+       CurrentUserPrincipal = ProcessXMLUserPrincipal();
+       
+       // Reset the changed settings.
+       
+       curl_easy_setopt(ConnectionHandle, CURLOPT_UPLOAD, 0L);
+       curl_easy_setopt(ConnectionHandle, CURLOPT_READDATA, NULL);
+       curl_easy_setopt(ConnectionHandle, CURLOPT_READFUNCTION, NULL);
+
+       return CurrentUserPrincipal;
+}
+
+CalDAVCalendarList CalDAV::GetCalendars(){
+       
+       CalDAVCalendarList ServerList;
+       
+       return ServerList;
+       
+}
+
 bool CalDAVObjectValidSettings(CalDAVConnectionData *ConnData){
 
        // Check if the passed CalDAV Connection Data is has
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy