// ConnectionObject.h - ConnectionObject interface header file.
//
-// (c) 2012-2015 Xestia Software Development.
+// (c) 2012-2016 Xestia Software Development.
//
// This file is part of Xestia Address Book.
//
#include <iostream>
#include "../common/sslcertstructs.h"
+#if defined (__APPLE__)
+#import <Foundation/Foundation.h>
+#import <SecurityInterface/SFCertificateTrustPanel.h>
+#endif
+
#if defined (__WIN32__)
#include <Windows.h>
#include <basetsd.h>
COCONNECT_SSLFAIL,
COCONNECT_INVALID,
COCONNECT_TIMEOUT,
- COCONNECT_AUTHFAIL
+ COCONNECT_AUTHFAIL,
+ COCONNECT_NOCONNECTION,
};
enum CORequestResult {
COREQUEST_OK,
COREQUEST_ERROR_NOTCONNECTED,
COREQUEST_ERROR_SERVER,
+ COREQUEST_NOCONNECTION,
};
enum COSSLVerified {
};
struct COServerResponse {
- CORequestResult RequestResult;
- std::string EntityTag;
- int SessionCode;
- int ResultCode;
- std::string ResultMessage;
+ CORequestResult RequestResult = COREQUEST_NOCONNECTION;
+ std::string EntityTag = "";
+ int SessionCode = 0;
+ int ResultCode = 0;
+ std::string ResultMessage = "";
};
struct COContactData {
- std::string Location;
- std::string Data;
+ std::string Location = "";
+ std::string Data = "";
COContactStatus Status = COCS_UNKNOWN;
};
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() = 0;
- //virtual ~ConnectionObject() {};
+ virtual void SetupConnectionObject() {};
- virtual bool IsTaskCompleted() = 0;
+ virtual bool IsTaskCompleted() { return false; };
- virtual COConnectResult Connect(bool DoAuthentication) = 0;
- virtual void BypassSSLVerification(bool EnableBypass) = 0;
+ virtual COConnectResult Connect(bool DoAuthentication) { COConnectResult x; return x; };
+ virtual void BypassSSLVerification(bool EnableBypass) {};
- virtual COServerResponse GetDefaultPrefix(std::string *ServerPrefix) = 0;
- virtual COServerResponse AddContact(std::string Location, std::string Data) = 0;
- virtual COServerResponse EditContact(std::string Location, std::string Data) = 0;
- virtual COServerResponse DeleteContact(std::string Location) = 0;
- virtual COServerResponse GetServerEntityTagValue(std::string Location) = 0;
- virtual COServerResponse GetContact(std::string Location, std::string *PageData) = 0;
- virtual COContactList GetContactList(std::string SyncToken) = 0;
+ virtual COServerResponse GetDefaultPrefix(std::string *ServerPrefix) { COServerResponse x; return x; };
+ virtual COServerResponse AddContact(std::string Location, std::string Data) { COServerResponse x; return x; };
+ virtual COServerResponse EditContact(std::string Location, std::string Data) { COServerResponse x; return x; };
+ virtual COServerResponse DeleteContact(std::string Location) { COServerResponse x; return x; };
+ virtual COServerResponse GetServerEntityTagValue(std::string Location) { COServerResponse x; return x; };
+ virtual COServerResponse GetContact(std::string Location, std::string *PageData) { COServerResponse x; return x; };
+ virtual COContactList GetContactList(std::string SyncToken) { COContactList x; return x; };
- virtual bool CanDoProcessing() = 0;
- virtual bool CanDoSSL() = 0;
- virtual COSSLVerified SSLVerify() = 0;
- virtual bool AbleToLogin() = 0;
- virtual bool HasValidResponse() = 0;
- virtual bool IsSelfSigned() = 0;
- virtual std::string GetErrorMessage() = 0;
+ virtual bool CanDoProcessing() { return false; };
+ virtual bool CanDoSSL() { return false; };
+ virtual COSSLVerified SSLVerify() { COSSLVerified x; return x; };
+ virtual bool AbleToLogin() { return false; };
+ virtual bool HasValidResponse() { return false; };
+ virtual bool IsSelfSigned() { return false; };
+ virtual std::string GetErrorMessage() { return ""; };
// OS specific functions.
#if defined(__APPLE__)
+
+ virtual SecTrustRef BuildSSLCollection() { return nullptr; };
+
#elif defined(__WIN32__)
- virtual PCCERT_CONTEXT BuildSSLCollection() = 0;
+ virtual PCCERT_CONTEXT BuildSSLCollection() { return nullptr; };
#else
- virtual SSLCertCollectionString BuildSSLCollection() = 0;
+ virtual SSLCertCollectionString BuildSSLCollection() {};
#endif
};
-#endif
\ No newline at end of file
+#endif