inc/HttpClient.h
changeset 0 0049171ecffb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/HttpClient.h	Fri Jul 24 08:46:02 2009 +0100
@@ -0,0 +1,87 @@
+/*
+ ============================================================================
+ Name	: HttpClient.h
+ Author	: John Kern
+ 
+ Copyright (c) 2009 Symbian Foundation Ltd
+ This component and the accompanying materials are made available
+ under the terms of the License "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:
+ - Symbian Foundation Ltd - initial contribution.
+ 
+ Contributors:
+ - John Kern
+ - Symsource
+ 
+ Description : This file contains panic codes.
+ ============================================================================
+ */
+
+#ifndef __HTTP_CLIENT_H_
+#define __HTTP_CLIENT_H_
+
+#include <es_sock.h>
+#include <http/mhttpdatasupplier.h>
+#include <http/mhttptransactioncallback.h>
+#include <http/rhttpheaders.h>
+#include <http/RHTTPSession.h>
+
+#include "NPRStoryXmlParser.h"
+
+class MHTTPObserver
+	{
+	public:
+		virtual void ResponseStatusL(TInt aStatusCode, const TDesC& aStatusText) = 0;
+		virtual void ResponseReceivedL(const TDesC8& aResponseBuffer) = 0;
+	};
+
+/*
+ * This class implements the http request response sequence using RHTTPSession
+ * class. The IAP selection is not done silently and needs user input.
+ */
+
+class CHttpClient : public CBase,
+					public MHTTPTransactionCallback,
+					public MHTTPDataSupplier
+	{
+public:
+	static CHttpClient* NewL(MHTTPObserver& aObserver);
+	virtual ~CHttpClient();
+	
+public:
+	void SendRequestL(const TDesC& aUri);
+
+	//From MHTTPTransactionCallback
+	void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent &aEvent);
+	TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent &aEvent);
+	
+	//From MHTTPDataSupplier
+	TBool GetNextDataPart(TPtrC8& aDataPart);
+	void ReleaseData();
+	TInt OverallDataSize();
+	TInt Reset();
+
+private:
+	void AddHeaderL(RHTTPHeaders aHeaders, TInt aHeaderField, const TDesC8& aHeaderValue);
+	void AddHeaderL(RHTTPHeaders aHeaders, TInt aHeaderField, const TDesC8& aHeaderValue, TInt aExtensionField, const TDesC8& aExtensionValue);
+	
+private:
+	CHttpClient(MHTTPObserver& aObserver);
+	void ConstructL();
+
+private:
+	RHTTPSession 			iHTTPSession;
+	MHTTPObserver& 			iObserver;
+	RSocketServ 			iSocketServ;
+	RConnection 			iConnection;
+	RHTTPTransaction		iHttpTransaction;
+	RHTTPConnectionInfo 	iHttpConnInfo;
+	HBufC8* 				iResponseBuffer; // The buffers to hold the request and response bodies.
+	HBufC8* 				iUri;
+	TBool 					iTransactionActive;
+	};
+
+#endif /* __HTTP_CLIENT_H_ */