diff -r 000000000000 -r e4d67989cc36 genericservices/httputils/UriParser/GenericUriParser.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/genericservices/httputils/UriParser/GenericUriParser.h Tue Feb 02 02:01:42 2010 +0200 @@ -0,0 +1,95 @@ +// Copyright (c) 2007-2009 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: +// This file contains the Parsing functionality for Generic URIs as +// specified in RFC 2396. +// +// + +/** + @file GenericUriParser.h +*/ +#ifndef __GENERICURIPARSER_H__ +#define __GENERICURIPARSER_H__ + +// System includes +#include +#include + +// Local includes +#include "TUriParserInternal.h" +#include "UriUtilsInternal.h" + +/** + Dependencies : CUriParserBase. + Comments : Provides Parsing functionality for the Uri objects. + This is implemented as per RFC2396 for Parsing the Generic Uris. + It uses 8-bit descriptors. + + @internalComponent + @released +*/ +class CGenericUriParser: public CBase + { +public: + + static CGenericUriParser* NewL(); + virtual ~CGenericUriParser(); + inline void DoParseUri(const TPtrC8& aUri, TPtrC8 aComponent[]); + +protected: + + CGenericUriParser(); + void ConstructL(); + + virtual TInt ParseScheme(const TPtrC8& aUri, TPtrC8& aScheme); + virtual TInt ParseAuthority(const TPtrC8& aUri, TPtrC8& aUserinfo, TPtrC8& aHost, TPtrC8& aPort, TBool aUseNetworkDelimiter); + virtual TInt ParsePath(const TPtrC8& aUri, TPtrC8& aPath); + virtual TInt ParseQuery(const TPtrC8& aUri, TPtrC8& aQuery); + virtual TInt ParseFragment(const TPtrC8& aUri, TPtrC8& aFragment); + + //Internal Supporting method for Parsing + virtual TInt FindFirstUriDelimiter(const TPtrC8& aString, TDelimiterSearchFlag aSearchFlag); + }; + +inline void CGenericUriParser::DoParseUri(const TPtrC8& aUri, TPtrC8 aComponent[]) + { + // Parse the components + TPtrC8 uri(aUri); + TInt consumed = 0; + TPtrC8& scheme = aComponent[EUriScheme]; + if( (consumed = ParseScheme(uri, scheme)) > 0 ) + { + uri.Set(uri.Mid(consumed)); + } + if( (consumed = ParseAuthority(uri, aComponent[EUriUserinfo], + aComponent[EUriHost], aComponent[EUriPort], IsNetworkScheme(scheme) )) > 0 ) + { + uri.Set(uri.Mid(consumed)); + } + if( (consumed = ParsePath(uri, aComponent[EUriPath])) > 0 ) + { + uri.Set(uri.Mid(consumed)); + } + if( (consumed = ParseQuery(uri, aComponent[EUriQuery])) > 0 ) + { + uri.Set(uri.Mid(consumed)); + } + if( (consumed = ParseFragment(uri, aComponent[EUriFragment])) > 0 ) + { + uri.Set(uri.Mid(consumed)); + } + } + +#endif // __GENERICURIPARSER_H__ +