webservices/wsoviplugin/src/wsovidevicehandler.cpp
changeset 0 62f9d29f7211
child 1 272b002df977
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsoviplugin/src/wsovidevicehandler.cpp	Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,158 @@
+/*
+* Copyright (c) 2008 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 "wsovidevicehandler.h"
+#include "senlogger.h"
+#include <SenTransportProperties.h>
+using namespace OAuth;
+// Create instance of concrete ECOM interface implementation
+CWSOviDeviceHandler* CWSOviDeviceHandler::NewL(TAny* aHandlerCtx)
+    {
+    
+    MSenHandlerContext* handlerCtx =
+        reinterpret_cast<MSenHandlerContext*>(aHandlerCtx);
+    CWSOviDeviceHandler* self   = new (ELeave) CWSOviDeviceHandler(*handlerCtx);
+    CleanupStack::PushL (self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// Constructor
+CWSOviDeviceHandler::CWSOviDeviceHandler(MSenHandlerContext& aCtx):CSenMessageHandler(aCtx)
+    {
+    }
+
+// Destructor
+CWSOviDeviceHandler::~CWSOviDeviceHandler()
+    {
+    TLSLOG(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel,(_L("CWSOviDeviceHandler::~CWSOviDeviceHandler()")));
+    delete iNAuthVersion;
+    }
+
+// Second phase construction.
+void CWSOviDeviceHandler::ConstructL()
+    {
+    }
+    
+TInt CWSOviDeviceHandler::InvokeL(MSenMessageContext& aCtx)
+    {
+        TInt error(KErrNone);
+        TLSLOG(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel,(_L("CWSOviDeviceHandler::InvokeL(MSenMessageContext& aCtx)")));
+        CSenTransportProperties* tp = ((CWSOviMessageContext&)aCtx).TP();
+        if (!tp) return KErrNotFound;
+        TPtrC8 consumerKey;
+        error = tp->PropertyL(KNCIMConsumerKeyId, consumerKey);		
+        
+        const TDesC8* nAuthVersion = iHandlerContext.GetDesC8L(HandlerContextKey::KVersion);
+        
+        if (!iNAuthVersion)
+            {
+            if ( !nAuthVersion || *nAuthVersion == KNullDesC8() )
+                {
+                iNAuthVersion = KParValVersion().AllocL();
+                }
+            else
+                {
+                iNAuthVersion = nAuthVersion->AllocL();
+                }
+            }
+        
+        HBufC8* value = HBufC8::NewLC(KParNokiaAuth().Length() +
+        							  KSpace().Length() +
+        							  
+        							  KParRealm().Length() +
+ 				                      KEqual().Length() + KQtMark().Length() +
+ 				                      KParValRealm().Length() +
+				                      KQtMark().Length() + KComma().Length() +
+                                      
+                                      KParVersion().Length() + 
+                                      KEqual().Length() + 2*KQtMark().Length() + 
+                                      iNAuthVersion->Length() + KComma().Length() +
+                                        
+                                      KParConsumerKey().Length() + 
+                                      KEqual().Length() + 2*KQtMark().Length() + 
+                                      consumerKey.Length()
+                                        
+                                        
+                                      );
+        
+        
+        //Authorization: OAuth,oauth_version="1.0"
+        value->Des().Append(KParNokiaAuth());
+        value->Des().Append(KSpace());
+       
+        value->Des().Append(KParRealm());
+        value->Des().Append(KEqual());
+        value->Des().Append(KQtMark());
+        value->Des().Append(KParValRealm);
+        value->Des().Append(KQtMark());
+        value->Des().Append(KComma());
+
+        value->Des().Append(KParConsumerKey());
+        value->Des().Append(KEqual());
+        value->Des().Append(KQtMark());
+        value->Des().Append(consumerKey);
+        value->Des().Append(KQtMark());
+        value->Des().Append(KComma());
+        
+        
+        value->Des().Append(KParVersion());
+        value->Des().Append(KEqual());
+        value->Des().Append(KQtMark());
+        value->Des().Append(*iNAuthVersion);
+        value->Des().Append(KQtMark());
+     
+        tp->SetPropertyL(KAuthHttpHeader, *value, KHttpHeaderType);
+        CleanupStack::PopAndDestroy(value);
+
+        RMapDescriptors& headerProperties = ((CWSOviMessageContext&)aCtx).OAuthProperies();
+        HBufC8* newValue = NULL;
+		newValue = iNAuthVersion->AllocL();
+        headerProperties.Insert(&KParVersion, newValue);
+
+        //msg context keeps same tp, so we dont have to update msg context
+        return KErrNone;
+    }
+    
+SenHandler::THandlerDirection CWSOviDeviceHandler::Direction() const
+    {
+    TLSLOG(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel,(_L("CWSOviDeviceHandler::Direction()")));
+    return SenHandler::EOutgoing;
+    };
+SenHandler::THandlerPhase CWSOviDeviceHandler::Phase()
+    {
+    TLSLOG(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel,(_L("CWSOviDeviceHandler::Phase()")));
+    return SenHandler::EMessage;
+    };    
+    
+TInt CWSOviDeviceHandler::InitL(MSenHandlerContext& aCtx)
+    {
+    iHandlerContext = aCtx;
+    return KErrNone;
+    }
+// END OF FILE
+