xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpTransport.cpp
changeset 0 c8caa15ef882
child 12 e6a66db4e9d0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xdmprotocols/XcapProtocol/XcapHttpTransport/src/XcapHttpTransport.cpp	Tue Feb 02 01:05:17 2010 +0200
@@ -0,0 +1,287 @@
+/*
+* Copyright (c) 2005 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:   CXcapHttpTransport
+*
+*/
+
+
+
+
+// INCLUDE FILES
+#include <in_iface.h>
+#include <xdmlogwriter.h>
+#include <deflatefilterinterface.h>
+#include <msgconnmanagerapi.h>
+#include "XdmCredentials.h"
+#include "XcapHttpReqGet.h"
+#include "XcapHttpReqPut.h"
+#include "XcapHttpReqMkcol.h"
+#include "XcapHttpReqHead.h"
+#include "XcapHttpRequest.h"
+#include "XcapHttpReqDelete.h"
+#include "XcapHttpTransport.h"
+#include "XcapHttpAuthManager.h"
+
+// ================= MEMBER FUNCTIONS =======================
+//
+
+
+// ----------------------------------------------------------
+// CXcapHttpTransport::CXcapHttpTransport
+// 
+// ----------------------------------------------------------
+//
+CXcapHttpTransport::CXcapHttpTransport( MMsgConnManager& aConnManager) :
+                                        iCredValidity( EFalse ),
+                                        iSessionClosed( ETrue ),
+                                        iConnManager( aConnManager )
+    { 
+    }
+
+// ----------------------------------------------------------
+// CXcapHttpTransport::NewL
+// 
+// ----------------------------------------------------------
+//
+EXPORT_C CXcapHttpTransport* CXcapHttpTransport::NewL( const TDesC& aRootUri,
+                                                       MMsgConnManager& aConnManager,
+                                                       const TXdmCredentials& aDigestCredentials )
+    {
+    CXcapHttpTransport* self = new ( ELeave ) CXcapHttpTransport( aConnManager );
+    CleanupStack::PushL( self );
+    self->ConstructL( aRootUri, aDigestCredentials );
+    CleanupStack::Pop();  //self
+    return self;
+    }
+
+// ----------------------------------------------------
+// CXcapHttpTransport::~CXcapHttpTransport
+// 
+// ----------------------------------------------------
+//
+CXcapHttpTransport::~CXcapHttpTransport()
+    {
+    #ifdef _DEBUG
+        WriteToLog( _L8( "CXcapHttpTransport::~CXcapHttpTransport()" ) );
+    #endif
+    delete iRootUri;
+    delete iAuthManager;
+    iHttpSession.Close();
+    iSessionClosed = ETrue;
+    delete iProxyBuffer;
+    #ifdef _DEBUG
+        WriteToLog( _L8( "  Destructor ends." ) );
+    #endif
+    delete iLogWriter;
+    }
+
+// ----------------------------------------------------------
+// CXcapHttpTransport::ConstructL
+// 
+// ----------------------------------------------------------
+//
+void CXcapHttpTransport::ConstructL( const TDesC& aRootUri, const TXdmCredentials& aDigestCredentials )
+    {
+    #ifdef _DEBUG
+        iLogWriter = CXdmLogWriter::NewL( KTransportLogFile );
+        WriteToLog( _L8( "CXcapHttpTransport::ConstructL" ) );
+    #endif
+    SetRootUriL( aRootUri );
+    InitialiseSessionL();
+    iAuthManager = CXcapHttpAuthManager::NewL( iHttpSession, *this, aDigestCredentials );
+    } 
+
+// ---------------------------------------------------------
+// CXcapHttpTransport::SetRootUriL
+// 
+// ---------------------------------------------------------
+//
+EXPORT_C void CXcapHttpTransport::SetRootUriL( const TDesC& aRootUri )
+    {
+    delete iRootUri;
+    iRootUri = NULL;
+    iRootUri = HBufC8::NewL( aRootUri.Length() );
+    iRootUri->Des().Copy( aRootUri );
+    }
+         
+// ----------------------------------------------------
+// CXcapHttpTransport::GetL
+// 
+// ----------------------------------------------------
+//
+EXPORT_C CXcapHttpReqGet* CXcapHttpTransport::GetL( const TDesC& aRequestUri )
+    {
+    #ifdef _DEBUG
+        WriteToLog( _L8( "CXcapHttpTransport::GetRequestL()" ) );
+    #endif
+    if( !iSessionClosed )
+        return CXcapHttpReqGet::NewL( aRequestUri, iHttpSession, *iAuthManager, *this );
+    else
+        {
+        User::Leave( KErrNotReady );
+        return NULL;
+        }    
+    }
+
+// ----------------------------------------------------
+// CXcapHttpTransport::PutL
+// 
+// ----------------------------------------------------
+//
+EXPORT_C CXcapHttpReqPut* CXcapHttpTransport::PutL( const TDesC& aRequestUri )
+    {
+    #ifdef _DEBUG
+        WriteToLog( _L8( "CXcapHttpTransport::PutRequestL()" ) );
+    #endif
+    if( !iSessionClosed )
+        return CXcapHttpReqPut::NewL( aRequestUri, iHttpSession, *iAuthManager, *this );
+    else
+        {
+        User::Leave( KErrNotReady );
+        return NULL;
+        }    
+    }
+
+// ----------------------------------------------------
+// CXcapHttpTransport::Mkcol
+// 
+// ----------------------------------------------------
+//
+EXPORT_C CXcapHttpReqMkcol* CXcapHttpTransport::MkcolL( const TDesC& aRequestUri )
+    {
+    #ifdef _DEBUG
+        WriteToLog( _L8( "CXcapHttpTransport::MkcolRequestL()" ) );
+    #endif
+    if( !iSessionClosed )
+        return CXcapHttpReqMkcol::NewL( aRequestUri, iHttpSession, *iAuthManager, *this );
+    else
+        {
+        User::Leave( KErrNotReady );
+        return NULL;
+        }    
+    }
+
+// ----------------------------------------------------
+// CXcapHttpTransport::Head
+// 
+// ----------------------------------------------------
+//
+EXPORT_C CXcapHttpReqHead* CXcapHttpTransport::HeadL( const TDesC& aRequestUri )
+    {
+    #ifdef _DEBUG
+        WriteToLog( _L8( "CXcapHttpTransport::HeadRequestL()" ) );
+    #endif
+    if( !iSessionClosed )
+        return CXcapHttpReqHead::NewL( aRequestUri, iHttpSession, *iAuthManager, *this );
+    else
+        {
+        User::Leave( KErrNotReady );
+        return NULL;
+        }    
+    }
+
+// ----------------------------------------------------
+// CXcapHttpTransport::DeleteL
+// 
+// ----------------------------------------------------
+//
+EXPORT_C CXcapHttpReqDelete* CXcapHttpTransport::DeleteL( const TDesC& aRequestUri )
+    {
+    #ifdef _DEBUG
+        WriteToLog( _L8( "CXcapHttpTransport::DeleteRequestL()" ) );
+    #endif
+    if( !iSessionClosed )
+        return CXcapHttpReqDelete::NewL( aRequestUri, iHttpSession, *iAuthManager, *this );
+    else
+        {
+        User::Leave( KErrNotReady );
+        return NULL;
+        }    
+    }
+
+// ----------------------------------------------------------
+// CXcapHttpTransport::RootUri
+// 
+// ----------------------------------------------------------
+//
+EXPORT_C TPtrC8 CXcapHttpTransport::RootUri()
+    {
+    return iRootUri != NULL ? iRootUri->Des() : TPtrC8();
+    }
+
+// ----------------------------------------------------
+// CXcapHttpTransport::InitialiseSessionL
+// 
+// ----------------------------------------------------
+//
+void CXcapHttpTransport::InitialiseSessionL()
+    {
+    #ifdef _DEBUG
+        WriteToLog( _L8( "CXcapHttpTransport::InitialiseSessionL()" ) );
+    #endif
+    iHttpSession.OpenL();
+    RSocketServ& session = iConnManager.SocketSession();
+    RConnection& connection = iConnManager.Connection();
+    RHTTPConnectionInfo connInfo = iHttpSession.ConnectionInfo();
+    RStringPool stringPool = iHttpSession.StringPool();
+    TInt conn = reinterpret_cast <TInt> ( &connection );
+    connInfo.SetPropertyL( stringPool.StringF( HTTP::EHttpSocketServ, RHTTPSession::GetTable() ),
+                           THTTPHdrVal( session.Handle() ) );
+    connInfo.SetPropertyL( stringPool.StringF( HTTP::EHttpSocketConnection, RHTTPSession::GetTable() ),
+                           THTTPHdrVal( conn ) );
+    connInfo.SetPropertyL( stringPool.StringF( HTTP::EHTTPVersion, RHTTPSession::GetTable() ),
+                           THTTPHdrVal( stringPool.StringF( HTTP::EHttp11, RHTTPSession::GetTable() ) ) );
+    connInfo.SetPropertyL( stringPool.StringF( HTTP::ESecureDialog, RHTTPSession::GetTable() ),
+                           THTTPHdrVal( stringPool.StringF( HTTP::EDialogPrompt, RHTTPSession::GetTable() ) ) );
+    //CHttpDeflateFilter::InstallFilterL( iHttpSession );
+    iSessionClosed = EFalse;
+    #ifdef _DEBUG
+        WriteToLog( _L8( "InitialiseSessionL() ends." ) );
+    #endif
+    }
+
+#ifdef _DEBUG              
+// ----------------------------------------------------
+// CXcapHttpTransport::WriteToLog
+// Writes to the log, 8-bit version
+// ----------------------------------------------------
+//
+void CXcapHttpTransport::WriteToLog( TRefByValue<const TDesC8> aFmt,... ) const
+    {
+    VA_LIST list;
+    VA_START( list, aFmt );
+    TBuf8<KLogBufferMaxSize> buf;
+    buf.FormatList( aFmt, list );
+    iLogWriter->WriteToLog( buf );
+    }
+       
+// ----------------------------------------------------
+// CXcapHttpTransport::WriteToLog
+// Writes to the log, 16-bit version
+// ----------------------------------------------------
+//
+void CXcapHttpTransport::WriteToLog( TRefByValue<const TDesC> aFmt,... ) const
+    {
+    VA_LIST list;
+    VA_START( list, aFmt );
+    TBuf<KLogBufferMaxSize> buf;
+    buf.FormatList( aFmt, list );
+    iLogWriter->WriteToLog( buf );
+    }
+#endif  //_DEBUG
+      
+
+
+
+// End of File