// 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
using namespace std;
// CalDAVConnectionData: used for
// connecting to the server.
enum CalDAVQueryResult {
CALDAVQUERYRESULT_UNITTESTFAIL = -1,
CALDAVQUERYRESULT_OK,
CALDAVQUERYRESULT_NOTRUN,
CALDAVQUERYRESULT_SERVERERROR
};
struct CalDAVConnectionData{
string Hostname = "";
int Port = 8008;
string Username = "";
string Password = "";
string Prefix = "";
bool UseSSL = true;
int Timeout = 60;
};
// CalDAVStatusData: used for
// getting the current server
// settings for the CalDAV
// object.
struct CalDAVStatus{
string Hostname;
int Port;
string Username;
string Prefix;
bool UseSSL;
int Timeout;
};
// CalDAVServerResult: used for
// getting the result of the
// request made via the CalDAV
// object.
struct CalDAVServerResult{
CalDAVQueryResult Result = CALDAVQUERYRESULT_NOTRUN;
CURLcode Code = CURLE_OK;
long HTTPCode = 0;
};
class CalDAV{
private:
CalDAVConnectionData ConnectionData;
CURL *ConnectionHandle = nullptr;
public:
void SetupConnectionData(CalDAVConnectionData *ConnData);
CalDAVStatus GetConnectionData();
CalDAVServerResult Connect();
CalDAV();
~CalDAV();
};
// Subroutines that are used with the
// CalDAVConnectionData struct.
bool CalDAVObjectValidSettings(CalDAVConnectionData *ConnData);
#endif