inc/HttpClient.h
author tahirm@symbian.org
Fri, 24 Jul 2009 08:46:02 +0100
changeset 0 0049171ecffb
permissions -rw-r--r--
initial release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     1
/*
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     2
 ============================================================================
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     3
 Name	: HttpClient.h
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     4
 Author	: John Kern
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     5
 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     6
 Copyright (c) 2009 Symbian Foundation Ltd
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     7
 This component and the accompanying materials are made available
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     8
 under the terms of the License "Eclipse Public License v1.0"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
     9
 which accompanies this distribution, and is available
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    10
 at the URL "http://www.eclipse.org/legal/epl-v10.html".
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    11
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    12
 Initial Contributors:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    13
 - Symbian Foundation Ltd - initial contribution.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    14
 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    15
 Contributors:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    16
 - John Kern
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    17
 - Symsource
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    18
 
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    19
 Description : This file contains panic codes.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    20
 ============================================================================
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    21
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    22
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    23
#ifndef __HTTP_CLIENT_H_
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    24
#define __HTTP_CLIENT_H_
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    25
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    26
#include <es_sock.h>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    27
#include <http/mhttpdatasupplier.h>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    28
#include <http/mhttptransactioncallback.h>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    29
#include <http/rhttpheaders.h>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    30
#include <http/RHTTPSession.h>
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    31
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    32
#include "NPRStoryXmlParser.h"
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    33
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    34
class MHTTPObserver
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    35
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    36
	public:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    37
		virtual void ResponseStatusL(TInt aStatusCode, const TDesC& aStatusText) = 0;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    38
		virtual void ResponseReceivedL(const TDesC8& aResponseBuffer) = 0;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    39
	};
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    40
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    41
/*
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    42
 * This class implements the http request response sequence using RHTTPSession
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    43
 * class. The IAP selection is not done silently and needs user input.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    44
 */
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    45
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    46
class CHttpClient : public CBase,
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    47
					public MHTTPTransactionCallback,
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    48
					public MHTTPDataSupplier
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    49
	{
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    50
public:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    51
	static CHttpClient* NewL(MHTTPObserver& aObserver);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    52
	virtual ~CHttpClient();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    53
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    54
public:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    55
	void SendRequestL(const TDesC& aUri);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    56
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    57
	//From MHTTPTransactionCallback
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    58
	void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent &aEvent);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    59
	TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent &aEvent);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    60
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    61
	//From MHTTPDataSupplier
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    62
	TBool GetNextDataPart(TPtrC8& aDataPart);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    63
	void ReleaseData();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    64
	TInt OverallDataSize();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    65
	TInt Reset();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    66
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    67
private:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    68
	void AddHeaderL(RHTTPHeaders aHeaders, TInt aHeaderField, const TDesC8& aHeaderValue);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    69
	void AddHeaderL(RHTTPHeaders aHeaders, TInt aHeaderField, const TDesC8& aHeaderValue, TInt aExtensionField, const TDesC8& aExtensionValue);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    70
	
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    71
private:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    72
	CHttpClient(MHTTPObserver& aObserver);
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    73
	void ConstructL();
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    74
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    75
private:
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    76
	RHTTPSession 			iHTTPSession;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    77
	MHTTPObserver& 			iObserver;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    78
	RSocketServ 			iSocketServ;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    79
	RConnection 			iConnection;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    80
	RHTTPTransaction		iHttpTransaction;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    81
	RHTTPConnectionInfo 	iHttpConnInfo;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    82
	HBufC8* 				iResponseBuffer; // The buffers to hold the request and response bodies.
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    83
	HBufC8* 				iUri;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    84
	TBool 					iTransactionActive;
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    85
	};
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    86
0049171ecffb initial release
tahirm@symbian.org
parents:
diff changeset
    87
#endif /* __HTTP_CLIENT_H_ */