diff -r 87c71b25c937 -r 88ee4cf65e19 remotestoragefw/webdavaccessplugin/inc/rsfwpropfindparser.h --- a/remotestoragefw/webdavaccessplugin/inc/rsfwpropfindparser.h Wed Jun 09 10:37:35 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,151 +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 PropFind method response body parser - * -*/ - - -#ifndef CRSFWPROPFINDPARSER_H -#define CRSFWPROPFINDPARSER_H - -// INCLUDES -#include -#include // needed for RAttributeArray - -#include "rsfwdavfileinfo.h" -#include "rsfwdirent.h" - -// CONSTANTS -const TInt KMaxNameSpaces = 10; - -// FORWARD DECLARATIONS -class CRsfwDirEnt; - -// CLASS DECLARATION -/** - * WebDAV Lock operation response body parser. - * Parses directory listing from WebDAV-server, which we got - * as XML-body response to PROPFIND-query. - * - * FOR METADATA: - * This comes from upper lever and are used to store relevant metadata - * from directory listing. - * Currently we want to extract the following to the entry - * displayname - * 2002-12-19T13:51:16Z - * Thu, 19 Dec 2002 13:51:16 GMT - * 2324; - * - * FOR CACHE CONCISTENCY: - * We need to remember the ETag of searched directory - * - * @lib davaccess.lib - * @since Series 60 3.1 - */ - -class CRsfwPropFindParser : public CBase, public Xml::MContentHandler - { -// EName = parsing is inside etc., -// ELooking = parsing is outside all tags of interest - enum TState - { - EName, - EResponse, - ENameInDisplayName, - EDate, - EModified, - ELength, - EResourceType, - EContentType, - EETag, - ELooking - }; - -public: // Constructors and destructor - /** - * Two-phased constructor. - */ - static CRsfwPropFindParser* NewL(); - static CRsfwPropFindParser* NewLC(); - - /** - * Destructor. - */ - virtual ~CRsfwPropFindParser(); - -public: // Functions from base classes -// Symbian parser - // From XML::MContentHandler - void OnStartDocumentL(const Xml::RDocumentParameters& aDocParam, - TInt aErrorCode); - void OnEndDocumentL(TInt aErrorCode); - void OnStartElementL(const Xml::RTagInfo& aElement, - const Xml::RAttributeArray& aAttributes, - TInt aErrorCode); - void OnEndElementL(const Xml::RTagInfo& aElement, TInt aErrorCode); - void OnContentL(const TDesC8& aBytes, TInt aErrorCode); - void OnStartPrefixMappingL(const RString& aPrefix, - const RString& aUri, - TInt aErrorCode); - void OnEndPrefixMappingL(const RString& aPrefix, TInt aErrorCode); - void OnIgnorableWhiteSpaceL(const TDesC8& aBytes, TInt aErrorCode); - void OnSkippedEntityL(const RString& aName, TInt aErrorCode); - void OnProcessingInstructionL(const TDesC8& aTarget, - const TDesC8& aData, - TInt aErrorCode); - void OnError(TInt aErrorCode); - TAny* GetExtendedInterface(const TInt32 aUid); - -public: // New functions - // setters for the parser - /** - Set directory entry to be filled - @param aDirEntArray directory entry array - */ - void SetDirEntArray(RPointerArray* aDirEntArray); - - /** - Set target directory - @param aPropFindPath Propfind resource path - @param aDepth Propfind depth - */ - void SetTargetDirectory(const TDesC& aPropFindPath, TInt aDepth); - - /** - Returns the error code if there was an error during parsing of - the response. - */ - TInt GetLastError(); - - -private: - void ConstructL(); - void ClearDirEntryL(); - HBufC* DecodeL(const TDesC8& aData); - -private: // Data - // Internal variables - RPointerArray* iDirEntArray; // not owned by us - const TDesC* iPropFindPath; // path - HBufC8* iContentString; - TInt iDepth; - CRsfwDirEnt* iDirEntry; // metadata entry currently read - TState iParseState; // internal state - TBool iCurrentIsParent; - TInt iError; // indicates a processing error - }; - -#endif // CRSFWPROPFINDPARSER_H - -// End of File