X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fobjects%2FCalDAV%2FCalDAV.h;h=da3b58c2205130d294c6d96f4d50de1b590ddade;hb=18117cb75689beaa9f5e96e44c3e0ea00fe1fa0a;hp=8a9c06c7cb9e496c1620ae3c33dea29e2e3e7e9a;hpb=b776fb87f9406910f146cd935605b0e505943142;p=xestiacalendar%2F.git diff --git a/source/objects/CalDAV/CalDAV.h b/source/objects/CalDAV/CalDAV.h index 8a9c06c..da3b58c 100644 --- a/source/objects/CalDAV/CalDAV.h +++ b/source/objects/CalDAV/CalDAV.h @@ -1,8 +1,31 @@ +// CalDAV.h - CalDAV Connection Object header. +// +// (c) 2016 Xestia Software Development. +// +// This file is part of Xestia Calendar. +// +// Xestia Address Book is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by the +// Free Software Foundation, version 3 of the license. +// +// Xestia Address Book is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with Xestia Calendar. If not, see + #ifndef __OBJECTS_CALDAV_CALDAV_H__ #define __OBJECTS_CALDAV_CALDAV_H__ #include +#include +#include #include +#include +#include +#include using namespace std; @@ -11,17 +34,24 @@ using namespace std; enum CalDAVQueryResult { CALDAVQUERYRESULT_UNITTESTFAIL = -1, - CALDAVQUERYRESULT_OK + CALDAVQUERYRESULT_OK, + CALDAVQUERYRESULT_NOTRUN, + CALDAVQUERYRESULT_SERVERERROR +}; + +struct CalDAVCalendarList { + }; struct CalDAVConnectionData{ - string Hostname; - int Port; - string Username; - string Password; - string Prefix; - bool UseSSL; + string Hostname = ""; + int Port = 8008; + string Username = ""; + string Password = ""; + string Prefix = ""; + bool UseSSL = true; + int Timeout = 60; }; @@ -37,7 +67,20 @@ struct CalDAVStatus{ string Username; string Prefix; bool UseSSL; + int Timeout; + +}; + +// CalDAVServerSupport: used for +// getting what the server supports +// from the CalDAV specification. +struct CalDAVServerSupport{ + + // Variable name. Name in CalDAV header. + + bool BasicSupport = false; // calendar-access + }; // CalDAVServerResult: used for @@ -47,13 +90,46 @@ struct CalDAVStatus{ struct CalDAVServerResult{ + CalDAVQueryResult Result = CALDAVQUERYRESULT_NOTRUN; + CURLcode Code = CURLE_OK; + long HTTPCode = 0; +}; + +// CalDAVSendData: used for +// sending data to the CaLDAV +// server. +struct CalDAVSendData{ + string *readptr; + long sizeleft; + int seek = 0; }; class CalDAV{ + private: + string ProcessXMLUserPrincipal(); + bool MatchXMLName(xmlNodePtr *NodePtr, string NodeName); + string FetchXMLData(xmlNodePtr *NodePtr); + + CalDAVConnectionData ConnectionData; + CalDAVServerResult ConnectionServerResult; + CURL *ConnectionHandle = nullptr; + string ServerData = ""; + string ServerHeader = ""; + + public: + CalDAV(); + ~CalDAV(); + void SetupConnectionData(CalDAVConnectionData *ConnData); + CalDAVStatus GetConnectionData(); + CalDAVServerResult Connect(); + CalDAVServerResult GetServerResult(); + CalDAVServerSupport GetServerSupport(); + CalDAVCalendarList GetCalendars(); + string GetUserPrincipal(); }; @@ -61,5 +137,6 @@ class CalDAV{ // CalDAVConnectionData struct. bool CalDAVObjectValidSettings(CalDAVConnectionData *ConnData); +string BuildServerAddress(CalDAVConnectionData *ConnData, string URIAddress); #endif