#include <iostream>
#include "../common/sslcertstructs.h"
+#if defined (__WIN32__)
+#include <Windows.h>
+#include <basetsd.h>
+#include <winapifamily.h>
+#include <security.h>
+#include <schannel.h>
+#include <cryptuiapi.h>
+#include <sspi.h>
+#endif
+
enum COConnectResult {
COCONNECT_UNITTESTFAIL = -1,
COCONNECT_OK,
COSSL_NORESULT
};
+enum COContactStatus {
+ COCS_UNKNOWN,
+ COCS_UPDATED,
+ COCS_DELETED
+};
+
struct COServerResponse {
CORequestResult RequestResult;
std::string EntityTag;
struct COContactData {
std::string Location;
std::string Data;
+ COContactStatus Status = COCS_UNKNOWN;
};
struct COContactList {
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 void SetupConnectionObject() = 0;
//virtual ~ConnectionObject() {};
- virtual bool IsTaskCompleted() {};
+ virtual bool IsTaskCompleted() = 0;
- virtual COConnectResult Connect(bool DoAuthentication) {};
- virtual void BypassSSLVerification(bool EnableBypass) {};
+ virtual COConnectResult Connect(bool DoAuthentication) = 0;
+ virtual void BypassSSLVerification(bool EnableBypass) = 0;
- 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 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 bool CanDoProcessing() {};
- virtual bool CanDoSSL() {};
- virtual COSSLVerified SSLVerify() {};
- virtual bool AbleToLogin() {};
- virtual bool HasValidResponse() {};
- virtual bool IsSelfSigned() {};
- virtual std::string GetErrorMessage() {};
+ 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;
// OS specific functions.
#if defined(__APPLE__)
#elif defined(__WIN32__)
+
+ virtual PCCERT_CONTEXT BuildSSLCollection() = 0;
+
#else
- SSLCertCollectionString BuildSSLCollection() {};
+ virtual SSLCertCollectionString BuildSSLCollection() = 0;
#endif