diff -r 000000000000 -r af10295192d8 networkingtestandutils/networkingintegrationtest/Te_Msg/src/TeHttpPacket.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkingtestandutils/networkingintegrationtest/Te_Msg/src/TeHttpPacket.cpp Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,137 @@ +// Copyright (c) 2003-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 +#include "TeHttpPacket.h" + +const TInt KThree = 3; + +THTTPMessage::THTTPMessage() +:iVers(_L8("HTTP/1.1")), iFieldsNumb(0), iCur(0) + { + } + +void THTTPField::Get(TDes8& aBuf) + { + aBuf.Copy(iFld); + aBuf.Append(_L(": ")); + aBuf.Append(iVal); + aBuf.Append(_L("\r\n")); + } + +void THTTPField::Field(TDes8& aBuf) + { + aBuf.Copy(iFld); + } + +void THTTPField::Value(TDes8& aBuf) + { + aBuf.Copy(iVal); + } + +TInt THTTPMessage::ParseMessage(const TDesC8& aMes) + { + TBuf8<512> tk; + iCur=0; + NextToken(aMes,tk); + if(tk.Compare(iVers)) + return -1; + NextToken(aMes,tk);//status + iStat.Copy(tk); + NextToken(aMes,tk);//comment + iPhrase.Copy(tk); + TBuf8<2048> val; + iFieldsNumb=0; + while(!NextMessHeader(aMes,tk,val)) + iFlds[iFieldsNumb++].Set(tk,val); + + return 0; + } + +void THTTPMessage::AddHeaderField(const TDesC8& aField,const TDesC8& aVal) + { + iFlds[iFieldsNumb++].Set(aField,aVal); + } +void THTTPMessage::GetHeader(TDes8& aBuf) + { + aBuf.Copy(iMeth); + aBuf.Append(' '); + aBuf.Append(iURI); + aBuf.Append(' '); + aBuf.Append(iVers); + aBuf.Append(_L("\r\n")); + TBuf8 <256> tmp; + for(TInt i=0;i tmp; + TBool find = EFalse; + for(TInt i=0;i: forme + NextToken(aSrc,aField); + if (!aField.Length()) + return -1; + aField.SetLength(aField.Length()-1);// to cut the ":" + Content(aSrc,aVal); + return 0; + } +TInt THTTPMessage::NextToken(const TDesC8& aSrc, TDes8& aTok) + { + aTok.Zero(); + if (aSrc[iCur]==' ' && aSrc.Length()>iCur) iCur++; + while(aSrc.Length()>(iCur+KThree) && aSrc[iCur]!=' ' && aSrc[iCur]!='\r' ) + aTok.Append(aSrc[iCur++]); + if(aSrc[iCur]=='\r') + iCur++; + if(aSrc[iCur]=='\n') + iCur++; + + return 0; + } + +TInt THTTPMessage::Content(const TDesC8& aSrc, TDes8& aCont) + { + aCont.Zero(); + if (aSrc[iCur]==' ' && aSrc.Length()>iCur) iCur++; + while(aSrc[iCur]!='\r' && aSrc.Length()>(iCur+3)) + aCont.Append(aSrc[iCur++]); + if(aSrc[iCur]=='\r') + iCur++; + if(aSrc[iCur]=='\n') + iCur++; + return 0; + } + + +