First public contribution.
1 // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // Internal classes for PREQ748 - Adding support for the SIP scheme in URIs.
15 // Classes for validating URIs according to their scheme
16 // File contains internal classes for validatin URIs according to
26 #ifndef __TVALIDATOR_H__
27 #define __TVALIDATOR_H__
30 #include <delimitedparser8.h>
34 _LIT8(KAlwaysValidChars, "-_.!~*'");
35 _LIT8(KCommonValidChars, "()/+$");
36 _LIT8(KValidUserChars, "=,;?&");
37 _LIT8(KValidParamChars, "[]:&");
38 _LIT8(KValidHeaderChars, "[]:?");
39 _LIT8(KUriAlwaysValidSipMarkChars, "-_.!~*'()");
40 _LIT8(KUriValidSipPwdChars, "&=+$,");
41 _LIT8(KUriValidSipToken, "%+`");
43 const TUint32 KCharSetNumber = 0x001;
44 const TUint32 KCharSetLowerAlpha = 0x002;
45 const TUint32 KCharSetUpperAlpha = 0x004;
46 const TUint32 KCharSetAlways = 0x008;
47 const TUint32 KCharSetCommon = 0x010;
48 const TUint32 KCharSetUser = 0x020;
49 const TUint32 KCharSetParam = 0x040;
50 const TUint32 KCharSetHeader = 0x080;
51 const TUint32 KCharSetSipMark = 0x100;
52 const TUint32 KCharSetSipPwd = 0x200;
53 const TUint32 KCharSetSipTkn = 0x400;
54 const TUint32 KCharSetAlphnumberic = KCharSetNumber | KCharSetLowerAlpha | KCharSetUpperAlpha;
55 const TUint32 KCharSetUserAll = KCharSetUser | KCharSetAlphnumberic | KCharSetAlways | KCharSetCommon;
56 const TUint32 KCharSetParamAll = KCharSetParam | KCharSetAlphnumberic | KCharSetAlways | KCharSetCommon;
57 const TUint32 KCharSetHeaderAll = KCharSetHeader | KCharSetAlphnumberic | KCharSetAlways | KCharSetCommon;
58 const TUint32 KCharSetSipPassWord = KCharSetAlphnumberic| KCharSetSipPwd | KCharSetSipMark ;
59 const TUint32 KCharSetSipToken = KCharSetAlphnumberic| KCharSetAlways | KCharSetSipTkn;
62 Comments : This class provides Base functionality for Validation of an URI.
63 which needs to be overridden by derived classes for validation Based on their RFC
72 TValidatorBase(const TUriC8& aUri);
76 // Implemented by derived validator classes
77 virtual TBool IsValidUserInfo() const = 0;
78 virtual TBool IsValidHost() const = 0;
79 virtual TBool IsValidPort() const = 0;
80 virtual TBool IsValidPath() const = 0;
81 virtual TBool IsValidQuery() const = 0;
82 virtual TBool IsValidFragment() const = 0;
84 // general utility methods
85 TBool IsValidCharacters(const TDesC8& aDes, TUint32 aCharTypes, TBool aEscapeValid = EFalse) const;
86 TBool IsEmpty(const TDesC8& aDes) const;
89 TBool IsInCharSet(TText8 aChar, const TDesC8& aCharSet) const;
96 Dependencies : TValidatorBase.
97 Comments : This class provides Sip Uri Validation functinality.
98 This is implemented as specified in RFC 3261.
103 class TValidatorSip: public TValidatorBase
106 TValidatorSip(const TUriC8& aUri);
108 // from TValidatorBase
109 TBool IsValidUserInfo() const;
110 TBool IsValidHost() const;
111 TBool IsValidPort() const;
112 TBool IsValidPath() const;
113 TBool IsValidQuery() const;
114 TBool IsValidFragment() const;
116 // supporting methods for the above
117 TBool IsValidUser(const TDesC8& aUser) const;
118 TBool IsValidPassword(const TDesC8& aPassword) const;
119 TBool IsDuplicated(const TDesC8& aParamName, const TDelimitedParserBase8 aParamList) const;
120 TBool IsValidParam(const TDesC8& aParam) const;
121 TBool IsValidParamSegment(const TDesC8& aName, const TDesC8& aValue) const;
122 TBool IsValidHeader(const TDesC8& aHeader) const;
123 TBool IsValidHeaderSegment(const TDesC8& aName, const TDesC8& aValue) const;
124 TBool IsValidParamToken(const TDesC8& aParam) const;
125 TBool IsValidParamTtl(const TDesC8& aParam) const;
126 TBool IsValidParamMaddr(const TDesC8& aParam) const;
130 Dependencies : TValidatorBase.
131 Comments : This class provides Tel Uri Validation functinality.
132 Only Partial support for tel-Uris specified in RFC 3966.
133 section 5 of RFC 3966 is not supported.
137 class TValidatorTel: public TValidatorBase
140 TValidatorTel(const TUriC8& aUri);
142 // from TValidatorBase
143 TBool IsValidUserInfo() const;
144 TBool IsValidHost() const;
145 TBool IsValidPort() const;
146 TBool IsValidPath() const;
147 TBool IsValidQuery() const;
148 TBool IsValidFragment() const;
150 // supporting methods for the above
151 TBool IsDuplicated(const TDesC8& aParamName, const TDelimitedParserBase8 aParamList) const;
152 TBool IsValidParamSegment(const TDesC8& aName, const TDesC8& aValue) const;
155 #endif // __TVALIDATOR_H__