httpp.h 1.07 KB
Newer Older
Jack Moffitt's avatar
Jack Moffitt committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
/* httpp.h
**
** http parsing library
*/

#ifndef __HTTPP_H
#define __HTTPP_H

#include "avl.h"

#define HTTPP_VAR_PROTOCOL "__protocol"
#define HTTPP_VAR_VERSION "__version"
#define HTTPP_VAR_URI "__uri"
#define HTTPP_VAR_REQ_TYPE "__req_type"

typedef enum httpp_request_type_tag {
	httpp_req_none, httpp_req_get, httpp_req_post, httpp_req_head, httpp_req_source, httpp_req_play, httpp_req_stats, httpp_req_unknown
} httpp_request_type_e;

typedef struct http_var_tag {
	char *name;
	char *value;
} http_var_t;

typedef struct http_varlist_tag {
	http_var_t var;
	struct http_varlist_tag *next;
} http_varlist_t;

typedef struct http_parser_tag {
	httpp_request_type_e req_type;
	char *uri;

	avl_tree *vars;
} http_parser_t;

http_parser_t *httpp_create_parser(void);
void httpp_initialize(http_parser_t *parser, http_varlist_t *defaults);
int httpp_parse(http_parser_t *parser, char *http_data, unsigned long len);
void httpp_setvar(http_parser_t *parser, char *name, char *value);
char *httpp_getvar(http_parser_t *parser, char *name);
void httpp_destroy(http_parser_t *parser);
 
#endif