/* libzzinet
*
* This program is distributed under the GNU General Public License, version 2.
* A copy of this license is included with this source.
*
* Copyright 2000-2006, Toni Thomsson <toni@tonjac.org>
*/
#ifndef zz_http_req_h
#define zz_http_req_h
#include "zz_http_session.h"
#include <zz_log.h>
#include <zz_buffer.h>
#include <config.h>
#include <ne_session.h>
#include <ne_request.h>
#define CRLF char(13), char(10)
/**
HTTP request, wrapper for NEON
Toni Thomsson, toni@tonjac.org
*/
class ZZ_API CzzHttpRequest
{
public:
//* Construction
CzzHttpRequest( CzzHttpSession* session, const char* method, const char* uri );
virtual ~CzzHttpRequest();
virtual int onBlockRead( const char *buf, size_t len );
virtual int onAccept( int status );
void addBody( const char *buf, size_t count );
void addRequestHeader( const char* name, const char* value );
void execute( void );
CzzString getResponseHeader( const char* name );
CzzBuffer* getReply( void );
private:
CzzLog m_Log;
CzzBuffer m_Buffer;
ne_request* m_Handle;
CzzHttpSession* m_Session;
static int reader( void *userdata, const char *buf, size_t len );
static int accept( void *userdata, ne_request *req, const ne_status *st );
};
#endif // zz_http_req_h