X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;ds=sidebyside;f=source%2Fconnobject%2FConnectionObject.h;h=e813aae7a8e2436a31830b930fb74506756e7051;hb=ba3ba5de4e84a8c3ddeb65549d0b46998e5ebdf5;hp=c8d1466ef626cb029df3cd3e303a5123234c3b3e;hpb=4990d9a3913f961e2978c06ba97a8ea79622aa7a;p=xestiaab%2F.git
diff --git a/source/connobject/ConnectionObject.h b/source/connobject/ConnectionObject.h
index c8d1466..e813aae 100644
--- a/source/connobject/ConnectionObject.h
+++ b/source/connobject/ConnectionObject.h
@@ -1,6 +1,6 @@
// 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.
//
@@ -16,37 +16,133 @@
// 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
+#include "../common/sslcertstructs.h"
+
+#if defined (__APPLE__)
+#import
+#import
+#endif
+
+#if defined (__WIN32__)
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#endif
enum COConnectResult {
COCONNECT_UNITTESTFAIL = -1,
COCONNECT_OK,
+ COCONNECT_SSLFAIL,
COCONNECT_INVALID,
COCONNECT_TIMEOUT,
- COCONNECT_AUTHFAIL
+ COCONNECT_AUTHFAIL,
+ COCONNECT_NOCONNECTION,
+};
+
+enum CORequestResult {
+ COREQUEST_UNITTESTFAIL = -1,
+ COREQUEST_OK,
+ COREQUEST_ERROR_NOTCONNECTED,
+ COREQUEST_ERROR_SERVER,
+ COREQUEST_NOCONNECTION,
+};
+
+enum COSSLVerified {
+ COSSL_UNITTESTFAIL = -1,
+ COSSL_VERIFIED,
+ COSSL_VERIFIED_USER,
+ COSSL_UNABLETOVERIFY,
+ COSSL_NOTAPPLICABLE,
+ COSSL_NORESULT
+};
+
+enum COContactStatus {
+ COCS_UNKNOWN,
+ COCS_UPDATED,
+ COCS_DELETED
+};
+
+struct COServerResponse {
+ CORequestResult RequestResult = COREQUEST_NOCONNECTION;
+ std::string EntityTag = "";
+ int SessionCode = 0;
+ int ResultCode = 0;
+ std::string ResultMessage = "";
+};
+
+struct COContactData {
+ std::string Location = "";
+ std::string Data = "";
+ COContactStatus Status = COCS_UNKNOWN;
+};
+
+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 COConnectResult Connect() {};
+ virtual bool IsTaskCompleted() { return false; };
- virtual bool CanDoProcessing() {};
- virtual bool CanDoSSL() {};
- virtual bool SSLVerify() {};
- virtual bool AbleToLogin() {};
- virtual bool HasValidResponse() {};
- virtual bool IsSelfSigned() {};
+ virtual COConnectResult Connect(bool DoAuthentication) { COConnectResult x; return x; };
+ virtual void BypassSSLVerification(bool EnableBypass) {};
+
+ 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() { 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() { return nullptr; };
+
+#else
+ virtual SSLCertCollectionString BuildSSLCollection() {};
+
+#endif
protected:
+ // Test Mode.
+
+ bool TestMode = false;
+
+ // Server variables.
+
std::string ServerAddress = "";
unsigned int ServerPort = 8080;
std::string ServerUser = "";
@@ -55,8 +151,19 @@ class ConnectionObject{
std::string ServerAccount = "";
bool ServerSSL = true;
std::string ErrorMessage = "";
- std::string ErrorBufferMessage = "";
- bool TestMode = false;
+
+ // 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:
-};
\ No newline at end of file
+};
+
+#endif