williamr@2: // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @file CHTTPFormEncoder.h williamr@2: @warning : This file contains Rose Model ID comments - please do not delete williamr@2: */ williamr@2: williamr@2: #ifndef __CHTTPFORMENCODER__ williamr@2: #define __CHTTPFORMENCODER__ williamr@2: williamr@2: // System includes williamr@2: #include williamr@2: williamr@2: //##ModelId=3C4C187902EB williamr@2: class CHTTPFormEncoder : public CBase, public MHTTPDataSupplier williamr@2: /** williamr@2: A data supplier class that is used to build up data that is to be encoded to application/x-www-form-urlencoded. williamr@2: williamr@2: A client will create an instance of this class and add name/value pairs. They then use this as the data supplier for the williamr@2: body of an http request that is a forms submission. williamr@2: williamr@2: The name and value must both be supplied in the correct character encoding that you want to send to the server. This then williamr@2: gets url encoded. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: //##ModelId=3C4C18790347 williamr@2: IMPORT_C static CHTTPFormEncoder* NewL(); williamr@2: //##ModelId=3C4C18790346 williamr@2: IMPORT_C ~CHTTPFormEncoder(); williamr@2: williamr@2: // from MHTTPDataSupplier williamr@2: //##ModelId=3C4C1879033D williamr@2: virtual TBool GetNextDataPart(TPtrC8& aDataPart); williamr@2: //##ModelId=3C4C1879033C williamr@2: virtual void ReleaseData(); williamr@2: //##ModelId=3C4C1879033B williamr@2: virtual TInt OverallDataSize(); williamr@2: // williamr@2: //##ModelId=3C4C18790335 williamr@2: virtual TInt Reset(); williamr@2: williamr@2: /** Adds a field to the data. williamr@2: A field consists a name and value pair williamr@2: @param aFieldName A name. This must not be empty williamr@2: @param aFieldValue A value. This may be an empty descriptor williamr@2: @leave KErrNoMemory There was not enough memory williamr@2: @leave KErrArgument aFieldName was empty williamr@2: @panic Will panic if called after the first data has been supplied or OverallDataSize has been called williamr@2: */ williamr@2: //##ModelId=3C4C18790332 williamr@2: IMPORT_C void AddFieldL(const TDesC8& aFieldName, const TDesC8& aFieldValue); williamr@2: williamr@2: williamr@2: private: williamr@2: //##ModelId=3C4C18790331 williamr@2: CHTTPFormEncoder(); williamr@2: //##ModelId=3C4C1879032A williamr@2: void ConstructL(); williamr@2: williamr@2: //##ModelId=3C4C18790328 williamr@2: TBool IsAlphaNumeric(TUint8 aChar); williamr@2: //##ModelId=3C4C1879031F williamr@2: void AppendSpecialChar(TUint8 aChar); williamr@2: //##ModelId=3C4C1879031D williamr@2: void AppendData(const TDesC8& aData); williamr@2: williamr@2: private: williamr@2: enum THTTPFormEncoderState williamr@2: { williamr@2: EAllowAppendData, // when first constructed williamr@2: ESuppliedSize, williamr@2: ESupplyingData, // GetDataChunk has been called but ReleaseData has not williamr@2: EDataReleased williamr@2: }; williamr@2: williamr@2: //##ModelId=3C4C18790315 williamr@2: THTTPFormEncoderState iState; williamr@2: //##ModelId=3C4C1879030D williamr@2: HBufC8* iData; // data is ALWAYS kept in the form-url-encoded format williamr@2: }; williamr@2: williamr@2: #endif // __CHTTPFORMENCODER__