// ConnectionObject.h - ConnectionObject interface header file.
//
// (c) 2012-2015 Xestia Software Development.
//
// This file is part of Xestia Address Book.
//
// 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 Address Book. If not, see
#ifndef __CONNOBJECT_CONNECTIONOBJECT_H__
#define __CONNOBJECT_CONNECTIONOBJECT_H__
#include
#include
#include
enum COConnectResult {
COCONNECT_UNITTESTFAIL = -1,
COCONNECT_OK,
COCONNECT_SSLFAIL,
COCONNECT_INVALID,
COCONNECT_TIMEOUT,
COCONNECT_AUTHFAIL
};
enum CORequestResult {
COREQUEST_UNITTESTFAIL = -1,
COREQUEST_OK,
COREQUEST_ERROR_NOTCONNECTED,
COREQUEST_ERROR_SERVER
};
enum COSSLVerified {
COSSL_UNITTESTFAIL = -1,
COSSL_VERIFIED,
COSSL_VERIFIED_USER,
COSSL_UNABLETOVERIFY,
COSSL_NOTAPPLICABLE,
COSSL_NORESULT
};
struct COServerResponse {
CORequestResult RequestResult;
std::string EntityTag;
int SessionCode;
int ResultCode;
std::string ResultMessage;
};
struct COContactData {
std::string Location;
std::string Data;
};
struct COContactList {
COServerResponse ServerResponse;
std::vector ListData;
std::string SyncToken;
};
class ConnectionObject{
public:
ConnectionObject(std::string ServerAddress, int ServerPort, std::string ServerUser, std::string ServerPass, bool ServerSSL);
ConnectionObject(std::string ServerAddress, int ServerPort, std::string ServerUser, std::string ServerPass, bool ServerSSL, std::string ServerPrefix, std::string ServerAccount);
// Virtual functions to be setup by the inheriting classes.
virtual void SetupConnectionObject() { };
//virtual ~ConnectionObject() {};
virtual bool IsTaskCompleted() {};
virtual COConnectResult Connect(bool DoAuthentication) {};
virtual void BypassSSLVerification(bool EnableBypass) {};
virtual COServerResponse GetDefaultPrefix(std::string *ServerPrefix) {};
virtual COServerResponse AddContact(std::string Location, std::string Data) {};
virtual COServerResponse EditContact(std::string Location, std::string Data) {};
virtual COServerResponse DeleteContact(std::string Location, std::string EntityTag) {};
virtual COServerResponse GetServerEntityTagValue(std::string Location) {};
virtual COServerResponse GetContact(std::string Location) {};
virtual COContactList GetContactList(std::string SyncToken) {};
virtual bool CanDoProcessing() {};
virtual bool CanDoSSL() {};
virtual COSSLVerified SSLVerify() {};
virtual bool AbleToLogin() {};
virtual bool HasValidResponse() {};
virtual bool IsSelfSigned() {};
virtual std::string GetErrorMessage() {};
protected:
// Test Mode.
bool TestMode = false;
// Server variables.
std::string ServerAddress = "";
unsigned int ServerPort = 8080;
std::string ServerUser = "";
std::string ServerPass = "";
std::string ServerPrefix = "";
std::string ServerAccount = "";
bool ServerSSL = true;
std::string ErrorMessage = "";
// Connect results.
bool SSLStatus = false;
COSSLVerified SSLVerified = COSSL_NORESULT;
bool ValidResponse = false;
bool AuthPassed = false;
bool CanProcess = false;
bool SSLSelfSigned = false;
bool TaskCompleted = false;
private:
};
#endif