Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Remove functions from ConnectionObject interface
[xestiaab/.git] / source / connobject / ConnectionObject.h
index 798ebae..b8d82d3 100644 (file)
@@ -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.
 //
 // You should have received a copy of the GNU General Public License along
 // with Xestia Address Book. If not, see <http://www.gnu.org/licenses/>
 
+#ifndef __CONNOBJECT_CONNECTIONOBJECT_H__
+#define __CONNOBJECT_CONNECTIONOBJECT_H__
+
 #include <string>
+#include <vector>
+#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>
+#include <winapifamily.h>
+#include <security.h>
+#include <schannel.h>
+#include <cryptuiapi.h>
+#include <sspi.h>
+#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_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;
-       std::string EntityTag;
-       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 = "";
+       COContactStatus Status = COCS_UNKNOWN;
+};
+
+struct COContactList {
+       COServerResponse ServerResponse;
+       std::vector<COContactData> 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 void SetupConnectionObject() = 0;
+               
+               virtual bool IsTaskCompleted() = 0;
                
-               virtual COConnectResult Connect() {};
+               virtual COConnectResult Connect(bool DoAuthentication) = 0;
+               virtual void BypassSSLVerification(bool EnableBypass) = 0;
                
-               virtual std::string GetDefaultPrefix() {};
-               //virtual void SetupData(std::string Method, std::string Location, std::string Data) {};
-               virtual COServerResponse AddContact(std::string Location, std::string Data) {};
+               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() = 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.
                
-               virtual bool CanDoProcessing() {};
-               virtual bool CanDoSSL() {};
-               virtual bool SSLVerify() {};
-               virtual bool AbleToLogin() {};
-               virtual bool HasValidResponse() {};
+#if defined(__APPLE__)
+    
+               virtual SecTrustRef BuildSSLCollection() = 0;
+    
+#elif defined(__WIN32__)
+
+               virtual PCCERT_CONTEXT BuildSSLCollection() = 0;
+
+#else
+               virtual SSLCertCollectionString BuildSSLCollection() = 0;
+
+#endif
                
        protected:
                // Test Mode.
@@ -78,17 +151,19 @@ class ConnectionObject{
                std::string ServerAccount = "";
                bool ServerSSL = true;
                std::string ErrorMessage = "";
-               std::string ErrorBufferMessage = "";
        
                // Connect results.
        
                bool SSLStatus = false;
-               bool SSLVerified = 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
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy