X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fobjects%2FCalDAV%2FCalDAV.h;h=148f2d07728b9b50278c5a3822a6cb99afc5c79d;hb=9bb29a2ad6d50014c8bb9b54cb40c8efb1ec75e9;hp=d52754165707734407340d7ae94fffa0f96b2d41;hpb=ea9eaed7642efe480c3c79944d2f771f2ef51d54;p=xestiacalendar%2F.git diff --git a/source/objects/CalDAV/CalDAV.h b/source/objects/CalDAV/CalDAV.h index d527541..148f2d0 100644 --- a/source/objects/CalDAV/CalDAV.h +++ b/source/objects/CalDAV/CalDAV.h @@ -1,14 +1,14 @@ // CalDAV.h - CalDAV Connection Object header. // -// (c) 2016 Xestia Software Development. +// (c) 2016-2017 Xestia Software Development. // // This file is part of Xestia Calendar. // -// Xestia Address Book is free software: you can redistribute it and/or modify +// Xestia Calendar 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, +// Xestia Calendar 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. @@ -20,10 +20,16 @@ #define __OBJECTS_CALDAV_CALDAV_H__ #include +#include +#include #include #include #include #include +#include +#include "../../common/colour.h" +#include "../../common/text.h" +#include "../../common/uuid.h" using namespace std; @@ -37,15 +43,35 @@ enum CalDAVQueryResult { CALDAVQUERYRESULT_SERVERERROR }; +struct CalDAVCalendarList { + + map name; + map href; + map order; + map description; + map calColour; + map tag; + map tagURL; + +}; + +struct CalDAVEntryList { + + map href; + map data; + map tag; + +}; + struct CalDAVConnectionData{ - string Hostname = ""; - int Port = 8008; - string Username = ""; - string Password = ""; - string Prefix = ""; - bool UseSSL = true; - int Timeout = 60; + string hostname = ""; + int port = 8008; + string username = ""; + string password = ""; + string prefix = ""; + bool useSSL = true; + int timeout = 60; }; @@ -56,12 +82,12 @@ struct CalDAVConnectionData{ struct CalDAVStatus{ - string Hostname; - int Port; - string Username; - string Prefix; - bool UseSSL; - int Timeout; + string hostname; + int port; + string username; + string prefix; + bool useSSL; + int timeout; }; @@ -73,7 +99,7 @@ struct CalDAVServerSupport{ // Variable name. Name in CalDAV header. - bool BasicSupport = false; // calendar-access + bool basicSupport = false; // calendar-access }; @@ -84,34 +110,92 @@ struct CalDAVServerSupport{ struct CalDAVServerResult{ - CalDAVQueryResult Result = CALDAVQUERYRESULT_NOTRUN; - CURLcode Code = CURLE_OK; - long HTTPCode = 0; + 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: - CalDAVConnectionData ConnectionData; - CURL *ConnectionHandle = nullptr; - string ServerData = ""; - string ServerHeader = ""; + string ProcessXMLUserPrincipal(); + string ProcessXMLCalendarHome(); + CalDAVCalendarList ProcessXMLCalendarList(); + CalDAVEntryList ProcessXMLEntryList(); + CalDAVEntryList ProcessXMLSyncTokenList(); + string ProcessXMLEntryETag(); + bool MatchXMLNameTransverse(xmlNodePtr *nodePtr, string nodeName); + bool MatchXMLName(xmlNodePtr *nodePtrOriginal, string nodeName); + string FetchXMLData(xmlNodePtr *nodePtr); + CalDAVServerResult EditCalendarProcess(string *calendarHREF, + string *calendarName, + Colour *calendarColour, + string *calendarDescription, + int *calendarOrder); + + CalDAVConnectionData connectionData; + CalDAVServerResult connectionServerResult; + CURL *connectionHandle = nullptr; + string serverData = ""; + string serverHeader = ""; public: - void SetupConnectionData(CalDAVConnectionData *ConnData); + CalDAV(); + ~CalDAV(); + void SetupConnectionData(CalDAVConnectionData *connData); CalDAVStatus GetConnectionData(); CalDAVServerResult Connect(); + CalDAVServerResult GetServerResult(); CalDAVServerSupport GetServerSupport(); - CalDAV(); - ~CalDAV(); + CalDAVCalendarList GetCalendars(); + CalDAVEntryList GetEntryList(string *calendarHREF); + CalDAVEntryList GetEntryList(string *calendarHREF, string *calendarTag); + + CalDAVServerResult AddCalendar(string calendarName); + CalDAVServerResult AddCalendar(string *calendarName, string *calendarShortName); + + CalDAVServerResult EditCalendar(string *calendarHREF, + string *calendarName, + Colour *calendarColour, + string *calendarDescription, + int *calendarOrder); + CalDAVServerResult EditCalendar(string *calendarHREF, + Colour *calendarColour); + CalDAVServerResult EditCalendar(string *calendarHREF, + string *calendarName); + CalDAVServerResult EditCalendar(string *calendarHREF, + int *calendarOrder); + CalDAVServerResult EditCalendarDescription(string *calendarHREF, + string *calendarDescription); + + CalDAVServerResult DeleteCalendar(string *calendarHREF); + + CalDAVServerResult AddEntry(string *calendarEntryHREF, string *entryData); + CalDAVServerResult EditEntry(string *calendarEntryHREF, string *entryData, string *entryETag); + CalDAVServerResult DeleteEntry(string *calendarEntryHREF); + + string GetUserPrincipal(); + string GetCalendarHome(string userPrincipalURI); + + CalDAVServerResult GetEntryETag(string *calendarEntryHREF, string *eTagValue); }; // Subroutines that are used with the // CalDAVConnectionData struct. -bool CalDAVObjectValidSettings(CalDAVConnectionData *ConnData); -string BuildServerAddress(CalDAVConnectionData *ConnData, string URIAddress); +bool CalDAVObjectValidSettings(CalDAVConnectionData *connData); +string BuildServerAddress(CalDAVConnectionData *connData, string uriAddress); #endif