#ifndef __HEADERS_H
#define __HEADERS_H
extern
"C"
{
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
}
#define H_REQUEST 1
#define H_RESPONSE 2
#define M_GET 1
#define M_POST 2
#define M_OPTIONS 3
#define M_PUT 4
#define M_DELETE 5
#define M_HEAD 6
struct
Header {
int
keylen;
char
*key;
SV *sv_value;
Header *prev, *next;
};
class
HTTPHeaders {
private
:
int
versionNumber, statusCode, headersType, method;
SV *sv_uri, *sv_firstLine, *sv_methodString;
Header *hdrs, *hdrtail;
Header *findHeader(
char
*which,
int
len = 0);
void
freeHeader(Header *hdr);
public
:
HTTPHeaders();
~HTTPHeaders();
int
parseHeaders(SV *headers);
SV *getReconstructed();
SV *getHeader(
char
*which);
void
setHeader(
char
*which,
char
*value);
int
getMethod();
SV *getMethodString();
int
getStatusCode();
void
setStatusCode(
int
code);
void
setVersionNumber(
int
version);
int
getVersionNumber();
bool
isRequest();
bool
isResponse();
void
setCodeText(
int
code,
char
*codetext);
SV *getURI();
SV *setURI(
char
*uri);
SV *getHeadersList();
};
#endif