Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Add libxml2 headers to the CalDAV object.
[xestiacalendar/.git] / source / objects / CalDAV / CalDAV.h
1 // CalDAV.h - CalDAV Connection Object header.
2 //
3 // (c) 2016 Xestia Software Development.
4 //
5 // This file is part of Xestia Calendar.
6 //
7 // Xestia Address Book is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by the
9 // Free Software Foundation, version 3 of the license.
10 //
11 // Xestia Address Book is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License along
17 // with Xestia Calendar. If not, see <http://www.gnu.org/licenses/>
19 #ifndef __OBJECTS_CALDAV_CALDAV_H__
20 #define __OBJECTS_CALDAV_CALDAV_H__
22 #include <curl/curl.h>
23 #include <libxml/parser.h>
24 #include <libxml/tree.h>
25 #include <string>
26 #include <iostream>
27 #include <vector>
28 #include <stdexcept>
30 using namespace std;
32 // CalDAVConnectionData: used for
33 // connecting to the server.
35 enum CalDAVQueryResult {
36         CALDAVQUERYRESULT_UNITTESTFAIL = -1,
37         CALDAVQUERYRESULT_OK,
38         CALDAVQUERYRESULT_NOTRUN,
39         CALDAVQUERYRESULT_SERVERERROR
40 };
42 struct CalDAVConnectionData{
43         
44         string Hostname = "";
45         int Port = 8008;
46         string Username = "";
47         string Password = "";
48         string Prefix = "";
49         bool UseSSL = true;
50         int Timeout = 60;
51         
52 };
54 // CalDAVStatusData: used for
55 // getting the current server
56 // settings for the CalDAV
57 // object.
59 struct CalDAVStatus{
61         string Hostname;
62         int Port;
63         string Username;
64         string Prefix;
65         bool UseSSL;    
66         int Timeout;
68 };
70 // CalDAVServerSupport: used for
71 // getting what the server supports
72 // from the CalDAV specification.
74 struct CalDAVServerSupport{
75         
76         // Variable name.                          Name in CalDAV header.
77         
78         bool BasicSupport = false;              // calendar-access
79         
80 };
82 // CalDAVServerResult: used for
83 // getting the result of the
84 // request made via the CalDAV
85 // object.
87 struct CalDAVServerResult{
89         CalDAVQueryResult Result = CALDAVQUERYRESULT_NOTRUN;
90         CURLcode Code = CURLE_OK;
91         long HTTPCode = 0;
92         
93 };
95 class CalDAV{
97         private:
98                 CalDAVConnectionData ConnectionData;
99                 CURL *ConnectionHandle = nullptr;
100                 string ServerData = "";
101                 string ServerHeader = "";
102         
103         public:
104                 void SetupConnectionData(CalDAVConnectionData *ConnData);
105                 CalDAVStatus GetConnectionData();
106                 CalDAVServerResult Connect();
107                 CalDAVServerSupport GetServerSupport();
108                 CalDAV();
109                 ~CalDAV();
110         
111 };
113 // Subroutines that are used with the 
114 // CalDAVConnectionData struct.
116 bool CalDAVObjectValidSettings(CalDAVConnectionData *ConnData);
117 string BuildServerAddress(CalDAVConnectionData *ConnData, string URIAddress);
119 #endif
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