--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/genericservices/httputils/Authentication/cauthentication.cpp Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,185 @@
+// Copyright (c) 2004-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:
+// authentication.cpp
+//
+//
+
+#include <e32base.h>
+
+#include "cauthentication.h"
+
+
+/**
+ Creates a new instance of CAuthentication.
+
+ @param aName The new user name. A local copy of descriptor is created. Can be a null descriptor.
+ @param aPassword The new password. A local copy of descriptor is created. Can be a null descriptor.
+ @param aMethod the method type of either basic or digest. Defaults to digest.
+ @return A pointer to the newly created CAuthentication object.
+ @leave KErrNoMemory
+ */
+EXPORT_C CAuthentication* CAuthentication::NewL(const TDesC8& aName, const TDesC8& aPassword, TMethod aMethod)
+ {
+ CAuthentication* me = new (ELeave) CAuthentication(aMethod);
+ CleanupStack::PushL(me);
+ me->ConstructL(aName, aPassword);
+ CleanupStack::Pop(me);
+ return me;
+ }
+
+/**
+ Creates a new instance of CAuthentication.
+
+ @param aUri The URI with a userinfo component.
+ @param aMethod the method type of either basic or digest. Defaults to digest.
+ @return A pointer to the newly created CAuthentication object.
+ @leave KErrNotFound If there is no userinfo component.
+ @leave KErrNoMemory
+*/
+EXPORT_C CAuthentication* CAuthentication::NewL(const TUriC8& aUri, TMethod aMethod)
+ {
+ CAuthentication* me = new (ELeave) CAuthentication(aMethod);
+ CleanupStack::PushL(me);
+ me->ConstructL(aUri);
+ CleanupStack::Pop(me);
+ return me;
+ }
+
+/**
+ Constructor.
+ @param aMethod enum value of type TMethod.
+ */
+CAuthentication::CAuthentication(TMethod aMethod):iMethodType(aMethod)
+ {
+ }
+
+/**
+ Second phase of two-phase construction method. Does any allocations required to fully construct
+ the object.
+
+ @param aName A descriptor to be allocated initialised with.
+ @param aPassword A descriptor to be allocated initialised with.
+ @pre First phase of construction is complete.
+ @post The object is fully constructed and initialized.
+ */
+void CAuthentication::ConstructL(const TDesC8& aName, const TDesC8& aPassword)
+ {
+ iName = aName.AllocL();
+ iPassword = aPassword.AllocL();
+ }
+
+/**
+ Second phase of two-phase construction method. Does any allocations required to fully construct
+ the object. Must set both user name and password to at least an empty string.
+
+ @param aUri The URI with a userinfo component.
+ @pre First phase of construction is complete.
+ @post The object is fully constructed and initialized.
+ */
+void CAuthentication::ConstructL(const TUriC8& aUri)
+ {
+ // Check if user info component present.
+ if(!aUri.IsPresent(EUriUserinfo))
+ {
+ User::Leave(KErrNotFound);
+ }
+ // Set name and pwd. Note that these could be empty strings.
+ TPtrC8 userInfo(aUri.Extract(EUriUserinfo));
+ TInt colPos = userInfo.Locate(':');
+ if(KErrNotFound == colPos) // 'name@' or '@' case
+ {
+ iName = userInfo.AllocL();
+ iPassword = KNullDesC8().AllocL();
+ }
+ else // ':' found
+ {
+ iName = userInfo.Left(colPos).AllocL();
+ iPassword = userInfo.Right(userInfo.Length()-colPos-1).AllocL();
+ }
+ }
+
+/**
+ Destructor
+ */
+EXPORT_C CAuthentication::~CAuthentication()
+ {
+ delete iName;
+ delete iPassword;
+ }
+
+/**
+ Gets the user name.
+
+ @return Reference to the user name descriptor.
+ */
+EXPORT_C const TDesC8& CAuthentication::Name() const
+ {
+ return *iName;
+ }
+
+/**
+ Gets the password.
+
+ @return Reference to the password descriptor.
+ */
+EXPORT_C const TDesC8& CAuthentication::Password() const
+ {
+ return *iPassword;
+ }
+
+/**
+ Gets the method type.
+
+ @return The authentication method type.
+ */
+EXPORT_C CAuthentication::TMethod CAuthentication::Method() const
+ {
+ return iMethodType;
+ }
+
+/**
+ Sets the username.
+
+ @param aName Reference to the new username descriptor.
+ @leave KErrNoMemory
+ */
+EXPORT_C void CAuthentication::SetNameL(const TDesC8& aName)
+ {
+ HBufC8* temp = iName;
+ iName = aName.AllocL();
+ delete temp;
+ }
+
+/**
+ Sets the password.
+
+ @param aPassword Reference to the new password descriptor.
+ @leave KErrNoMemory
+ */
+EXPORT_C void CAuthentication::SetPasswordL(const TDesC8& aPassword)
+ {
+ HBufC8* temp = iPassword;
+ iPassword = aPassword.AllocL();
+ delete temp;
+ }
+
+/**
+ Sets the method type.
+
+ @param aMethod The new authentication method type.
+ */
+EXPORT_C void CAuthentication::SetMethod(TMethod aMethod)
+ {
+ iMethodType = aMethod;
+ }