diff -r 000000000000 -r 62f9d29f7211 webservices/wsstar/wsstarplugin/src/wsstarhttpclient.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webservices/wsstar/wsstarplugin/src/wsstarhttpclient.cpp Thu Jan 07 16:19:19 2010 +0200 @@ -0,0 +1,282 @@ +/* +* Copyright (c) 2006-2006 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 FILES +#include "wsstarhttpclient.h" +#include "SenHttpTransportProperties.h" +#include "SenServiceConnection.h" // public error codes +#include "sendebug.h" +#include "senlogger.h" + +//--------------------------------------------------------------------------- +// Creates and returns a new instace of this class. +//--------------------------------------------------------------------------- +// +CWSStarHttpClient* CWSStarHttpClient::NewL( + CSIF& aSIF, + CSenWSDescription* aInitializer, + RFileLogger& aLogger) + { + CWSStarHttpClient* pNew = NewLC(aSIF, aInitializer, aLogger); + CleanupStack::Pop(); + return pNew; + } + +//--------------------------------------------------------------------------- +// Creates and returns a new instace of this class and leaves the object on the cleanup stack +//--------------------------------------------------------------------------- +// +CWSStarHttpClient* CWSStarHttpClient::NewLC( + CSIF& aSIF, + CSenWSDescription* aInitializer, + RFileLogger& aLogger) + { + CWSStarHttpClient* pNew = + new (ELeave) CWSStarHttpClient( + aSIF, + MSenServiceDescription::EWSStarPolicyClient, + aInitializer, + aLogger); + + CleanupStack::PushL(pNew); + pNew->BaseConstructL(); + return pNew; + } + +//--------------------------------------------------------------------------- +// Constructor +//--------------------------------------------------------------------------- +// +CWSStarHttpClient::CWSStarHttpClient( CSIF& aSIF, + TDescriptionClassType aType, + CSenWSDescription* aInitializer, + RFileLogger& aLogger ) + : CSenInternalServiceConsumer(aType, aSIF), + iInitializer(aInitializer), + iLog(aLogger) + { + } + +void CWSStarHttpClient::BaseConstructL() + { + CSenInternalServiceConsumer::ConstructL(); + iPolicySession = CWSStarServiceSession::NewL(Framework()); + iPolicySession->AddConsumerL(*this); + iPolicySession->SetEndPointL(iInitializer->Endpoint()); + iPolicySession->InitializeFromL(*iInitializer); + ipTransport = Framework().Manager().CreateL(*iPolicySession, NULL); + TLSLOG_L(KSenCoreServiceManagerLogChannelBase , KMinLogLevel,"CWSStarHttpClient::ConstructL"); + } + +//--------------------------------------------------------------------------- +// Destructor +//--------------------------------------------------------------------------- +// +CWSStarHttpClient::~CWSStarHttpClient() + { + TLSLOG_L(KSenCoreServiceManagerLogChannelBase , KMinLogLevel,"CWSStarHttpClient::~CWSStarHttpClient"); + if( iPolicySession ) + { + TRAP_IGNORE( iPolicySession->RemoveConsumerL(*this); ) + } + delete ipTransport; + delete iPolicySession; + } + + +//--------------------------------------------------------------------------- +// The most siginificant method of this class. +//--------------------------------------------------------------------------- +// +TInt CWSStarHttpClient::GetHttpL( const TDesC8& aRequest, + HBufC8*& apResponse, + CSenWSDescription* apSD ) + { + TLSLOG_L(KSenCoreServiceManagerLogChannelBase , KMinLogLevel,"CWSStarHttpClient::GetHttpL"); + TInt retVal(KErrNone); // for returning error codes + if( !iInitializer ) + { + return KErrSenInternal; + } + TPtrC8 endpoint(iInitializer->Endpoint()); + + CSenHttpTransportProperties* pHttpProperties = CSenHttpTransportProperties::NewLC(); + pHttpProperties->SetHttpMethodL(CSenHttpTransportProperties::ESenHttpGet); + _LIT8(KAcceptedHeader, "text/xml,text/plain"); + pHttpProperties->SetAcceptL(KAcceptedHeader); + TUint32 desiredIapId(0); + + if( apSD ) + { + TInt getIapRetVal = apSD->IapId( desiredIapId ); + if ( getIapRetVal == KErrNone ) + { + pHttpProperties->SetIapIdL( desiredIapId ); + } + } + //limit http timeout, + pHttpProperties->SetMaxTimeToLiveL(WSStarSession::KMaxHttpTimeOut); + TLSLOG_FORMAT((KSenCoreServiceManagerLogChannelBase , KNormalLogLevel, _L8("CWSStarHttpClient::GetHttpL - with IAP ID (%d):"), desiredIapId)); + HBufC8* pSerializedProperties = pHttpProperties->AsUtf8L(); + CleanupStack::PopAndDestroy(pHttpProperties); + + CleanupStack::PushL(pSerializedProperties); + TLSLOG_ALL(KSenCoreServiceManagerLogChannelBase , KNormalLogLevel,( pSerializedProperties->Des() )); + retVal = ipTransport->SubmitL(endpoint, aRequest, *pSerializedProperties, apResponse, *this); + TLSLOG_FORMAT((KSenCoreServiceManagerLogChannelBase , KNormalLogLevel, _L8("CWSStarHttpClient::GetHttpL - SubmitL returned: %d"), retVal)); + + CleanupStack::PopAndDestroy( pSerializedProperties ); + +#ifdef _SENDEBUG + if( apResponse ) + { + TPtrC8 response = apResponse->Des(); + TLSLOG_L(KSenCoreServiceManagerLogChannelBase , KMaxLogLevel,"* * * * * * * * * * * * *"); + TLSLOG_FORMAT((KSenCoreServiceManagerLogChannelBase , KMaxLogLevel, _L8("CWSStarHttpClient::GetHttpL - response (%d bytes):"), response.Length())); + TLSLOG_ALL(KSenCoreServiceManagerLogChannelBase , KMaxLogLevel,( response )); + TLSLOG_L(KSenCoreServiceManagerLogChannelBase , KMinLogLevel,"CSenCoreServiceManager::CreateL:"); + } +#endif // _SENDEBUG + + if( retVal != KErrNone ) + { + delete apResponse; + apResponse = NULL; + } + return retVal; + } + +//--------------------------------------------------------------------------- +// SetStatus +//--------------------------------------------------------------------------- +// + +void CWSStarHttpClient::SetStatus(TInt /*aStatus */) + { + } + +//--------------------------------------------------------------------------- +// ServiceSession +//--------------------------------------------------------------------------- +// +CSenServiceSession* CWSStarHttpClient::ServiceSession() + { + return iPolicySession; + } + +//--------------------------------------------------------------------------- +// Obtain Transport using a factory from Core Manager +//--------------------------------------------------------------------------- +// +MSenTransport& CWSStarHttpClient::TransportL() + { + if(!ipTransport) + { + // Core is capable of working as transport factory, too. + // The returned transport instancies may or may not be + // ECOM plugins: + TLSLOG_L(KSenCoreServiceManagerLogChannelBase , KMinLogLevel,"CWSStarHttpClient::Instantiating new transport"); + ipTransport = Framework().Manager().CreateL(*iPolicySession, iPolicySession); + } + return *ipTransport; + } +void CWSStarHttpClient::SetClientSessionL( + CWSStarServiceSession* aSession) + { + TLSLOG_L(KSenCoreServiceManagerLogChannelBase , KMinLogLevel,"CWSStarHttpClient::SetServiceSessionL"); + // free memory + //delete iPolicySession; + iPolicySession = aSession; + if(iPolicySession) + { + iPolicySession->AddConsumerL(*this); + } + } + +//--------------------------------------------------------------------------- +// Getter for endpoint +//--------------------------------------------------------------------------- +// +TPtrC8 CWSStarHttpClient::Endpoint() + { + return iPolicySession->Endpoint(); + } +//--------------------------------------------------------------------------- +// Getter for contract +//--------------------------------------------------------------------------- +// +TPtrC8 CWSStarHttpClient::Contract() + { + return iPolicySession->Contract(); + } + +//--------------------------------------------------------------------------- +// serialie to xml +//--------------------------------------------------------------------------- +// +void CWSStarHttpClient::WriteAsXMLToL(RWriteStream& aWriteStream) + { + iPolicySession->WriteAsXMLToL(aWriteStream); + } + +//--------------------------------------------------------------------------- +// +//--------------------------------------------------------------------------- +// +void CWSStarHttpClient::SetVersion(const TDesC8* aVersion) + { + iVersion = aVersion; + } +//--------------------------------------------------------------------------- +// +//--------------------------------------------------------------------------- +// +TBool CWSStarHttpClient::HasSuperClass( TDescriptionClassType aType ) + { + if( aType == MSenServiceDescription::ESenInternalServiceConsumer ) // direct superclass! + { + // If asked type is the know *direct* father/mother, return true: + return ETrue; + } + else + { + // Otherwise, ask from superclass (chain, recursively) + return CSenInternalServiceConsumer::HasSuperClass( aType ); + } + } +void CWSStarHttpClient::SetDataTrafficDetails( TSenDataTrafficDetails& aDetails) + { + iHttpDetails = aDetails; + } +void CWSStarHttpClient::DataTrafficDetails( TSenDataTrafficDetails& aDetails) + { + aDetails = iHttpDetails; + } + +// End of file + +