--- a/remotestoragefw/webdavaccessplugin/inc/rsfwdavsession.h Wed Jun 09 10:37:35 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,357 +0,0 @@
-/*
-* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: WebDAV session
- *
-*/
-
-
-#ifndef CRSFWDAVSESSION_H
-#define CRSFWDAVSESSION_H
-
-// INCLUDES
-#include <http/mhttpauthenticationcallback.h>
-#include <xml/parser.h>
-#include "rsfwdavdefs.h"
-
-
-// FORWARD DECLARATIONS
-class CRsfwDavTransaction;
-class CRsfwDavFileInfo;
-class CRsfwPropFindParser;
-class CRsfwConnectionManager;
-class MRsfwDavResponseObserver;
-class MRsfwConnectionObserver;
-class CRsfwLockQueryParser;
-class CRsfwDirEnt;
-
-// CLASS DECLARATION
-/**
- * Response handler for WebDAV requests
- *
- * @lib davaccess.lib
- * @since Series 60 3.1
- */
-class MRsfwDavResponseObserver
- {
-public:
- /**
- * Receive a notification of a completed request.
- * @param aWebDavTransactionId id of the request.
- */
- virtual void RequestCompleteL(TUint aWebDavTransactionId) = 0;
-
- /**
- * Receive a notification of a failed request.
- * @param aWebDavTransactionId id of the request.
- */
- virtual void RequestError(TUint aWebDavTransactionId, TInt aStatus) = 0;
- };
-
-
-// CLASS DECLARATION
-/**
- * WebDAV session
- *
- * Class created for the interface to webdav client library
- * Designed to encapsulate http,xml stuff
- * Intended for communicating with one server at a time !
- *
- * Uses http transport framework: can do SSL, Basic + Digest Auth
- * Uses symbian xmllib library for parsing
- *
- * @lib davaccess.lib
- * @since Series 60 3.1
- */
-class CRsfwDavSession: public CBase,
- public MHTTPAuthenticationCallback
- {
-public: // Constructors and destructor
- /**
- * Two-phased constructor.
- */
- static CRsfwDavSession*
- CRsfwDavSession::NewL(MRsfwDavResponseObserver* aWebDavResponseObserver,
- MRsfwConnectionObserver* aRsfwConnectionObserver);
- /**
- * Destructor.
- */
- virtual ~CRsfwDavSession();
-
-public: // New functions
- /**
- @function OpenL
- @discussion Opens the HTTP session and
- sets up parameters for the session
- @param aHost The full URI of the server
- including the path to the root directory
- @param aPort The port to connect to there
- @param aUserName UserName to be used in Http basic or digest auth there
- @param aPassword Password to be used in Http basic or digest auth there
- @param aAuxData Auxiliary information used for IAP selection
- */
- void OpenL(const TDesC& aHost,
- TInt aPort,
- const TDesC& aUserName,
- const TDesC& aPassword,
- const TDesC& aAuxData);
-
- /**
- @function OptionsL
- @discussion Runs an OPTIONS command to the passed uri to see if its
- available and force the authentication to run
- @return nothing
- */
- CRsfwDavTransaction* OptionsL();
-
- /**
- @function PropFindL
- @discussion Runs a PROPFIND command against the current server.
- Tells the server to only look for name, size related properties
- @param aPath The path relative to the root which should be used
- @param aIsDir Indicates whether the path points to a directory or a file
- @param aDirEnts Directory entry array to be filled
- @return pointer to the submitted WebDAV transaction
- */
- CRsfwDavTransaction* PropFindL(const TDesC& aPath,
- TInt aDepth,
- TBool aIsDir,
- RPointerArray<CRsfwDirEnt>& aDirEnts);
-
- /**
- @function GetL
- @discussion Runs GET command against the server
- @param aSrcPath The name of the resource to be fetched:
- expects this to be the path relative to the root directory
- @param aDstPath The path of the local file where the data is fetched
- @param aOffset offset from the start of the file
- @param aLength data length (can be NULL)
- @param aFlags operation options (see RemoteAccess.h)
- @return pointer to the submitted WebDAV transaction
- */
- // == GET
- CRsfwDavTransaction* GetL(const TDesC& aSrcPath,
- const TDesC& aDstPath,
- TInt aOffset,
- TInt* aLength,
- TUint aFlags);
-
- /**
- @function PutL
- @discussion Runs PUT command against the server
- @param aSrcPath The name of the resource to be copied:
- expects this to be an absolute path
- @param aDstPath The name of the resource to be created on the server:
- expected to be the path relative to the root directory
- @param aMimeType The MIME-type of the file
- @param aOffset offset from the start of the file
- @param aLength data length (can be NULL)
- @param aTotalLength The total length, can be 0 if aLength is NULL or 0
- @param aUseContentRange Whether the server is assumed to support
- Content-Range- header
- @param aLocktoken Possible lock token
- @return pointer to the submitted WebDAV transaction
- */
- // == PUT
- CRsfwDavTransaction* PutL(const TDesC& aSrcPath,
- const TDesC& aDstPath,
- const TDesC8& aMimeType,
- TInt aOffset,
- TInt aLength,
- TInt aTotalLength,
- TBool aUseContentRange,
- const TDesC8* aLockToken = NULL);
-
- /**
- @function DeleteL
- @discussion Runs DELETE command against the server
- @param aResource The name of the resource to be deleted:
- expects this to be the path relative to the root directory
- @return pointer to the submitted WebDAV transaction
- */
- CRsfwDavTransaction* DeleteL(const TDesC& aPath,
- TBool aDir,
- const TDesC8* aLockToken = NULL);
-
- /**
- @function MkDirL
- @discussion Runs MKCOL webdav command against the server
- @param aPath The name of the directory to be made:
- expects this to be the path relative to the root directory
- @return pointer to the submitted WebDAV transaction
- */
- CRsfwDavTransaction* MkDirL(const TDesC& aPath);
-
- /**
- @function MoveL
- @discussion Runs MOVE command against the server
- @param aOldPath The name of the resource to be renamed:
- expects this to be the path relative to the root directory
- @param aNewPath The new name of the resource
- to be created on the server:
- expected to be the path relative to the root directory
- @param aOverwrite Specifies
- whether the server should overwrite a non-null destination resource
- @return pointer to the submitted WebDAV transaction
- */
- CRsfwDavTransaction* MoveL(const TDesC& aOldPath,
- const TDesC& aNewPath,
- TBool aOverwrite,
- const TDesC8* aSrcLockToken,
- const TDesC8* aDstLockToken);
-
- /**
- @function LockL
- @discussion Runs LOCK command against the server
- @param aPath the resource to be locked:
- expects this to be the path relative to the root directory
- @param aFlags flags
- @param aTimeout lock timeout in seconds
- @param aDavFileInfo the location where collected file info should be set
- @return pointer to the submitted WebDAV transaction
- */
- CRsfwDavTransaction* LockL(const TDesC& aPath,
- TUint aFlags,
- TUint aTimeOut,
- CRsfwDavFileInfo** aDavFileInfo);
-
- /**
- @function UnlockL
- @discussion Runs UNLOCK command against the server
- @param aPath the resource to be locked:
- expects this to be the path relative to the root directory
- @param aLockToken lock token
- @return pointer to the submitted WebDAV transaction
- */
- CRsfwDavTransaction* UnlockL(const TDesC& aPath,
- const TDesC8* aLockToken);
-
- /**
- @function RefreshLockL
- @discussion Refreshes a locked resource by using LOCK method
- @param aPath the resource to be locked:
- expects this to be the path relative to the root directory
- @param aTimeout lock timeout in seconds
- @param aLockToken lock token
- @param aDavFileInfo the location where collected file info should be set
- @return pointer to the submitted WebDAV transaction
- */
- CRsfwDavTransaction* RefreshLockL(const TDesC& aPath,
- TUint aTimeOut,
- const TDesC8* aLockToken,
- CRsfwDavFileInfo** aDavFileInfo);
-
- /**
- @function Error
- @return Most recently recieved error code
- */
- TInt Error();
-
- /**
- @function ErrorMsg
- @return Most recently received error message from server
- */
- const TDesC& ErrorMsg();
-
- RHTTPSession& HttpSession();
- void SetConnected(TBool aConnected);
- void SetWebDavSupportClass(TInt aWebDavSupportClass);
- TInt WebDavSupportClass();
-
- inline RFs& FileServerSession() {return iFs;};
- inline const TDesC& RootDirectory() {return iDavRoot;};
- void WebDavTransactionCompleteL(CRsfwDavTransaction* aWebDavTransaction);
- void WebDavTransactionError(CRsfwDavTransaction* aWebDavTransaction);
- void SetPropFindParametersL(RPointerArray<CRsfwDirEnt>* aDirEntArray,
- const TDesC& aPropFindPath,
- TInt aDepth);
- void SetLockQueryParameters(CRsfwDavFileInfo* aDavFileInfo);
- void ParsePropFindResponseL(const TDesC8& aResponse);
- void ParseLockResponseL(const TDesC8& aResponse);
- void PropFindResponseEndL();
- void LockResponseEndL();
- void CancelParsing(TWebDavOp aOp);
-
-public: // Functions from base classes
- // From MHTTPAuthenticationCallback
- TBool GetCredentialsL(const TUriC8& aURI,
- RString aRealm,
- RStringF aAuthenticationType,
- RString& aUserName,
- RString& aPassword);
-
-private:
- void ConstructL(MRsfwDavResponseObserver* aWebDavResponseObserver,
- MRsfwConnectionObserver* aRsfwConnectionObserver);
- RStringPool StringPool();
- void Slashify(TDes& aStr);
- HBufC* BuildPathLC(const TDesC& aRoot,
- const TDesC& aPath,
- TBool aEndSlash);
- HBufC* BuildFullPathLC(const TDesC& aPath, TBool aEndSlash);
- HBufC8* BuildUriLC(const TDesC& aPath,
- TBool aEndSlash,
- TUriParser8* aUriParser);
- void SetHeaderL(RHTTPHeaders aHeaders,
- TInt aHdrField,
- const TDesC8& aHdrValue);
- void SetHeaderL(RHTTPHeaders aHeaders,
- const TDesC8& aHdrName,
- const TDesC8& aHdrValue);
- void SetBasicHeadersL(RHTTPHeaders aHeaders,
- const TUriC8& aUri,
- TBool aNoProxy);
- void SetDepthHeaderL(RHTTPHeaders aHeaders, TInt aDepth);
- void SetLockTokenHeaderL(RHTTPHeaders aHeaders,
- const TDesC8* aUri,
- const TDesC8* aLockToken,
- TBool aUseTaggedLockToken);
- TBool IsConnected();
- TUint NextWebDavTransactionId();
- HBufC8* EncodeL(const TDesC& aData);
- void SetupConnectionL();
-
-private: // Data
- // information about the connection
- HBufC8* iUserName;
- HBufC8* iPassword;
- TBuf<KMaxServerNameLen> iHost;
- TBuf<KMaxPath> iDavRoot;
- TBuf<KMaxPath> iHostRoot;
- TBuf<KMaxConnParameter> iAuxData;
- HBufC8* iEncodedHost; // UTF8-encoded host name part
-
- MRsfwDavResponseObserver* iWebDavResponseObserver;
- MRsfwConnectionObserver* iRsfwConnectionObserver;
-
- CRsfwPropFindParser* iPropFindParserImpl;
- CRsfwLockQueryParser* iLockQueryParserImpl;
- Xml::CParser* iPropFindParser;
- Xml::CParser* iLockQueryParser;
-
- // whether XML parser should be cancelled if the transaction is cancelled
- TBool iPropfindParsingActive;
-
-
- TBool iConnected; // whether we have a successful TCP session
- RFs iFs;
- TInt iWebDavSupportClass;
- TInt iCredentialRequestCount;
- TUint iCurrentWebDavTransactionId;
- RHTTPSession iHttpSession;
- CRsfwConnectionManager* iRsfwConnectionManager;
- };
-
-#endif // CRSFWDAVSESSION_H
-
-// End of File