--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/genericservices/httputils/UriParser/TValidator.h Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,155 @@
+// Copyright (c) 2001-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:
+// Internal classes for PREQ748 - Adding support for the SIP scheme in URIs.
+// Classes for validating URIs according to their scheme
+// File contains internal classes for validatin URIs according to
+// their scheme type
+//
+//
+
+/**
+ @file TValidator.h
+ @see Uri8.h
+*/
+
+#ifndef __TVALIDATOR_H__
+#define __TVALIDATOR_H__
+
+#include <uri8.h>
+#include <delimitedparser8.h>
+
+// Constants
+//
+_LIT8(KAlwaysValidChars, "-_.!~*'");
+_LIT8(KCommonValidChars, "()/+$");
+_LIT8(KValidUserChars, "=,;?&");
+_LIT8(KValidParamChars, "[]:&");
+_LIT8(KValidHeaderChars, "[]:?");
+_LIT8(KUriAlwaysValidSipMarkChars, "-_.!~*'()");
+_LIT8(KUriValidSipPwdChars, "&=+$,");
+_LIT8(KUriValidSipToken, "%+`");
+
+const TUint32 KCharSetNumber = 0x001;
+const TUint32 KCharSetLowerAlpha = 0x002;
+const TUint32 KCharSetUpperAlpha = 0x004;
+const TUint32 KCharSetAlways = 0x008;
+const TUint32 KCharSetCommon = 0x010;
+const TUint32 KCharSetUser = 0x020;
+const TUint32 KCharSetParam = 0x040;
+const TUint32 KCharSetHeader = 0x080;
+const TUint32 KCharSetSipMark = 0x100;
+const TUint32 KCharSetSipPwd = 0x200;
+const TUint32 KCharSetSipTkn = 0x400;
+const TUint32 KCharSetAlphnumberic = KCharSetNumber | KCharSetLowerAlpha | KCharSetUpperAlpha;
+const TUint32 KCharSetUserAll = KCharSetUser | KCharSetAlphnumberic | KCharSetAlways | KCharSetCommon;
+const TUint32 KCharSetParamAll = KCharSetParam | KCharSetAlphnumberic | KCharSetAlways | KCharSetCommon;
+const TUint32 KCharSetHeaderAll = KCharSetHeader | KCharSetAlphnumberic | KCharSetAlways | KCharSetCommon;
+const TUint32 KCharSetSipPassWord = KCharSetAlphnumberic| KCharSetSipPwd | KCharSetSipMark ;
+const TUint32 KCharSetSipToken = KCharSetAlphnumberic| KCharSetAlways | KCharSetSipTkn;
+
+/**
+ Comments : This class provides Base functionality for Validation of an URI.
+ which needs to be overridden by derived classes for validation Based on their RFC
+ specifications.
+
+ @internalComponent
+ @released
+*/
+class TValidatorBase
+ {
+public:
+ TValidatorBase(const TUriC8& aUri);
+ TInt Validate();
+
+protected:
+ // Implemented by derived validator classes
+ virtual TBool IsValidUserInfo() const = 0;
+ virtual TBool IsValidHost() const = 0;
+ virtual TBool IsValidPort() const = 0;
+ virtual TBool IsValidPath() const = 0;
+ virtual TBool IsValidQuery() const = 0;
+ virtual TBool IsValidFragment() const = 0;
+
+ // general utility methods
+ TBool IsValidCharacters(const TDesC8& aDes, TUint32 aCharTypes, TBool aEscapeValid = EFalse) const;
+ TBool IsEmpty(const TDesC8& aDes) const;
+
+private:
+ TBool IsInCharSet(TText8 aChar, const TDesC8& aCharSet) const;
+
+protected:
+ const TUriC8& iUri;
+ };
+
+/**
+Dependencies : TValidatorBase.
+Comments : This class provides Sip Uri Validation functinality.
+ This is implemented as specified in RFC 3261.
+
+ @internalComponent
+ @released
+*/
+class TValidatorSip: public TValidatorBase
+ {
+public:
+ TValidatorSip(const TUriC8& aUri);
+private:
+ // from TValidatorBase
+ TBool IsValidUserInfo() const;
+ TBool IsValidHost() const;
+ TBool IsValidPort() const;
+ TBool IsValidPath() const;
+ TBool IsValidQuery() const;
+ TBool IsValidFragment() const;
+
+ // supporting methods for the above
+ TBool IsValidUser(const TDesC8& aUser) const;
+ TBool IsValidPassword(const TDesC8& aPassword) const;
+ TBool IsDuplicated(const TDesC8& aParamName, const TDelimitedParserBase8 aParamList) const;
+ TBool IsValidParam(const TDesC8& aParam) const;
+ TBool IsValidParamSegment(const TDesC8& aName, const TDesC8& aValue) const;
+ TBool IsValidHeader(const TDesC8& aHeader) const;
+ TBool IsValidHeaderSegment(const TDesC8& aName, const TDesC8& aValue) const;
+ TBool IsValidParamToken(const TDesC8& aParam) const;
+ TBool IsValidParamTtl(const TDesC8& aParam) const;
+ TBool IsValidParamMaddr(const TDesC8& aParam) const;
+};
+
+/**
+Dependencies : TValidatorBase.
+Comments : This class provides Tel Uri Validation functinality.
+ Only Partial support for tel-Uris specified in RFC 3966.
+ section 5 of RFC 3966 is not supported.
+ @internalComponent
+ @released
+*/
+class TValidatorTel: public TValidatorBase
+ {
+public:
+ TValidatorTel(const TUriC8& aUri);
+private:
+ // from TValidatorBase
+ TBool IsValidUserInfo() const;
+ TBool IsValidHost() const;
+ TBool IsValidPort() const;
+ TBool IsValidPath() const;
+ TBool IsValidQuery() const;
+ TBool IsValidFragment() const;
+
+ // supporting methods for the above
+ TBool IsDuplicated(const TDesC8& aParamName, const TDelimitedParserBase8 aParamList) const;
+ TBool IsValidParamSegment(const TDesC8& aName, const TDesC8& aValue) const;
+};
+
+#endif // __TVALIDATOR_H__