applayerprotocols/httpservice/src/chttpclientauthentication.cpp
branchRCL_3
changeset 7 337070b4fa18
child 39 c0c2f28ace9c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerprotocols/httpservice/src/chttpclientauthentication.cpp	Fri Mar 12 15:45:46 2010 +0200
@@ -0,0 +1,62 @@
+// 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:
+//
+
+#include "chttpclientauthentication.h"
+#include "mhttpserviceauthentication.h"
+
+CHttpClientAuthentication* CHttpClientAuthentication::New(RHTTPSession aSesion, MHTTPServiceAuthentication* aCallback)
+    {
+    CHttpClientAuthentication* self = new CHttpClientAuthentication;
+    TInt err = self->Construct(aSesion, aCallback);
+    if(err != KErrNone)
+        {
+        delete self;
+        self = NULL;
+        }
+    return self;
+    }
+
+TInt CHttpClientAuthentication::Construct(RHTTPSession aSession, MHTTPServiceAuthentication* aCallback)
+    {      
+    // Install this class as the callback for authentication requests
+    TRAPD(err, InstallAuthenticationL(aSession));
+    iHTTPServiceAuthentication = aCallback;
+    return err;
+    }
+
+void CHttpClientAuthentication::FillCredentialsL(RString& aRealm, RString& aUsername, RString& aPassword, RBuf8& aClientUsername, RBuf8& aClientPassword)
+    {  
+    aUsername = aRealm.Pool().OpenStringL(aClientUsername);
+    aPassword = aRealm.Pool().OpenStringL(aClientPassword);
+    }
+
+TBool CHttpClientAuthentication::GetCredentialsL(const TUriC8& aURI, RString aRealm, 
+                                   RStringF aAuthenticationType,
+                                   RString& aUsername, 
+                                   RString& aPassword)
+    {
+    //User credentials
+    RBuf8 clientUsername;
+    RBuf8 clientPassword;    
+     
+    User::LeaveIfError(iHTTPServiceAuthentication->OnAuthentication(aURI.UriDes(), aRealm.DesC(), aAuthenticationType.DesC(), clientUsername, clientPassword));
+    
+    FillCredentialsL(aRealm, aUsername, aPassword, clientUsername, clientPassword);
+    
+    clientUsername.Close();
+    clientPassword.Close();    
+    
+    return ETrue;    
+    }