diff -r 65a3ef1d5bd0 -r f742655b05bf callcontinuity/vccutils/src/vccmiscutils.cpp --- a/callcontinuity/vccutils/src/vccmiscutils.cpp Thu Aug 19 09:45:22 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,187 +0,0 @@ -/* -* Copyright (c) 2007 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: Implementation of Miscallaneous service functions -* -*/ - - - -#include -#include -#include -#include -#include -//#include - -#include "vccmiscutils.h" -#include "rubydebug.h" - -_LIT( KVCCSIPScheme, "sip" ); -_LIT( KVCCSIPSScheme, "sips" ); -_LIT( KVCCHTTPScheme, "http" ); -_LIT( KVCCHTTPSScheme, "https" ); - -const TUint KAt = '@'; - -const TInt KVCCMinVDNLength = 5; - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// Checks if 16 bit reference is valid URI (VDI). -// --------------------------------------------------------------------------- -// -EXPORT_C TInt TVCCMiscUtils::URIValidL( const TDesC16& aURI ) - { - RUBY_DEBUG_BLOCK( "TVCCMiscUtils::URIValidL()" ); - - TUriParser parser; - // Check if uri contains multiple @ characters - TUint atcount( 0 ); - for( TUint i(0); i1 ) - { - return KErrUnknown; - } - - - // Parse the URI - TInt err = parser.Parse( aURI ); - - if ( !err ) - { - // Check for invalid characters - // 0x00-0x1F and > 0x7F), space (0x20), delimiter characters ('<', '>', - // '#', '%', '"') and unwise characters ('{', '}', '|', '\', '^', '[', - // ']', '`') are illegal - if ( !UriUtils::HasInvalidChars( aURI ) ) - { - // Check if scheme is valid - if ( parser.IsSchemeValid() ) - { - // Extract the scheme for comparing - const TDesC& scheme = parser.Extract( EUriScheme ); - - // SIP or SIPS scheme - if ( scheme.Compare( KVCCSIPScheme ) == 0 || - scheme.Compare( KVCCSIPSScheme ) == 0 ) - { - err = parser.Validate(); - } - // HTTP or HTTPS scheme - else if ( scheme.Compare( KVCCHTTPScheme ) == 0 || - scheme.Compare( KVCCHTTPSScheme ) == 0 ) - { - // Do nothing at the moment. - } - else - { - err = KErrUnknown; - } - } - // No scheme, maybe a host type - else - { - UriUtils::TUriHostType type = UriUtils::HostType( aURI ); - - switch ( type ) - { - case UriUtils::EIPv6Host: - case UriUtils::EIPv4Host: - case UriUtils::ETextHost: - break; - default: - { - err = KErrUnknown; - break; - } - } // switch - } // else - } // if invalid characters - else - { - err = KErrNotSupported; - } - } - - return err; - } - -// --------------------------------------------------------------------------- -// Checks if reference is valid VDN. -// --------------------------------------------------------------------------- -// -EXPORT_C TBool TVCCMiscUtils::VDNValidL( const TDesC16& aVDN ) - { - RUBY_DEBUG_BLOCK( "TVCCMiscUtils::VDNValidL()" ); - - TBool retVal( ETrue ); - TLex input( aVDN ); - TInt numCount( 0 ); - - // Is the string empty - if ( aVDN.Length() > 0 ) - { - input.Mark(); - - // Deal with the '+' -sign at the beginning of the string - if (input.Peek() == '+') - { - // Step forward - input.Inc(); - } - - for ( ;; numCount++ ) - { - if ( !( input.Peek().IsDigit() ) && !( input.Peek().Eos() ) ) - { - // Next character is not a digit or end-of-string character - retVal = EFalse; - break; - } - else if ( input.Peek().Eos() && numCount < KVCCMinVDNLength ) - { - // End of string but number count is too small to be a valid VDN - retVal = EFalse; - break; - } - else if ( input.Peek().Eos() && numCount >= KVCCMinVDNLength ) - { - // At the end of string and number count is acceptable to be a - // valid VDN - break; - } - else - { - // step forward - input.Inc(); - } - } // for - } - else - { - // Empty string - retVal = EFalse; - } - - return retVal; - } -