mirror of
https://gitlab.xiph.org/xiph/icecast-common.git
synced 2024-12-04 14:46:31 -05:00
Feature: Added httpp_request_info()
This commit is contained in:
parent
1f57410788
commit
aeddcad5df
@ -59,6 +59,63 @@ static void _httpp_set_param_nocopy(avl_tree *tree, char *name, char *value, int
|
||||
static void _httpp_set_param(avl_tree *tree, const char *name, const char *value);
|
||||
static http_var_t *_httpp_get_param_var(avl_tree *tree, const char *name);
|
||||
|
||||
httpp_request_info_t httpp_request_info(httpp_request_type_e req)
|
||||
{
|
||||
#if 0
|
||||
#define HTTPP_REQUEST_IS_SAFE ((httpp_request_info_t)0x0001U)
|
||||
#define HTTPP_REQUEST_IS_IDEMPOTENT ((httpp_request_info_t)0x0002U)
|
||||
#define HTTPP_REQUEST_IS_CACHEABLE ((httpp_request_info_t)0x0004U)
|
||||
#define HTTPP_REQUEST_HAS_RESPONSE_BODY ((httpp_request_info_t)0x0010U)
|
||||
#define HTTPP_REQUEST_HAS_REQUEST_BODY ((httpp_request_info_t)0x0100U)
|
||||
#define HTTPP_REQUEST_HAS_OPTIONAL_REQUEST_BODY ((httpp_request_info_t)0x0200U)
|
||||
#endif
|
||||
switch (req) {
|
||||
/* offical methods */
|
||||
case httpp_req_get:
|
||||
return HTTPP_REQUEST_IS_SAFE|HTTPP_REQUEST_IS_IDEMPOTENT|HTTPP_REQUEST_IS_CACHEABLE|HTTPP_REQUEST_HAS_RESPONSE_BODY|HTTPP_REQUEST_HAS_OPTIONAL_REQUEST_BODY;
|
||||
break;
|
||||
case httpp_req_post:
|
||||
return HTTPP_REQUEST_IS_CACHEABLE|HTTPP_REQUEST_HAS_RESPONSE_BODY|HTTPP_REQUEST_HAS_REQUEST_BODY;
|
||||
break;
|
||||
case httpp_req_put:
|
||||
return HTTPP_REQUEST_IS_IDEMPOTENT|HTTPP_REQUEST_HAS_RESPONSE_BODY|HTTPP_REQUEST_HAS_REQUEST_BODY;
|
||||
break;
|
||||
case httpp_req_head:
|
||||
return HTTPP_REQUEST_IS_SAFE|HTTPP_REQUEST_IS_IDEMPOTENT|HTTPP_REQUEST_IS_CACHEABLE;
|
||||
break;
|
||||
case httpp_req_options:
|
||||
return HTTPP_REQUEST_IS_SAFE|HTTPP_REQUEST_IS_IDEMPOTENT|HTTPP_REQUEST_HAS_RESPONSE_BODY|HTTPP_REQUEST_HAS_OPTIONAL_REQUEST_BODY;
|
||||
break;
|
||||
case httpp_req_delete:
|
||||
return HTTPP_REQUEST_IS_IDEMPOTENT|HTTPP_REQUEST_HAS_RESPONSE_BODY;
|
||||
break;
|
||||
case httpp_req_trace:
|
||||
return HTTPP_REQUEST_IS_SAFE|HTTPP_REQUEST_IS_IDEMPOTENT|HTTPP_REQUEST_HAS_RESPONSE_BODY;
|
||||
break;
|
||||
case httpp_req_connect:
|
||||
return HTTPP_REQUEST_HAS_RESPONSE_BODY|HTTPP_REQUEST_HAS_REQUEST_BODY;
|
||||
break;
|
||||
|
||||
/* Icecast specific methods */
|
||||
case httpp_req_source:
|
||||
return HTTPP_REQUEST_HAS_RESPONSE_BODY|HTTPP_REQUEST_HAS_REQUEST_BODY;
|
||||
break;
|
||||
case httpp_req_play:
|
||||
return HTTPP_REQUEST_IS_SAFE|HTTPP_REQUEST_HAS_RESPONSE_BODY|HTTPP_REQUEST_HAS_OPTIONAL_REQUEST_BODY;
|
||||
break;
|
||||
case httpp_req_stats:
|
||||
return HTTPP_REQUEST_IS_SAFE|HTTPP_REQUEST_HAS_RESPONSE_BODY|HTTPP_REQUEST_HAS_OPTIONAL_REQUEST_BODY;
|
||||
break;
|
||||
|
||||
/* Virtual and other methods */
|
||||
case httpp_req_none:
|
||||
case httpp_req_unknown:
|
||||
default:
|
||||
return HTTPP_REQUEST_HAS_RESPONSE_BODY|HTTPP_REQUEST_HAS_OPTIONAL_REQUEST_BODY;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
http_parser_t *httpp_create_parser(void)
|
||||
{
|
||||
return (http_parser_t *)malloc(sizeof(http_parser_t));
|
||||
|
@ -61,6 +61,14 @@ typedef enum httpp_request_type_tag {
|
||||
httpp_req_unknown
|
||||
} httpp_request_type_e;
|
||||
|
||||
typedef unsigned int httpp_request_info_t;
|
||||
#define HTTPP_REQUEST_IS_SAFE ((httpp_request_info_t)0x0001U)
|
||||
#define HTTPP_REQUEST_IS_IDEMPOTENT ((httpp_request_info_t)0x0002U)
|
||||
#define HTTPP_REQUEST_IS_CACHEABLE ((httpp_request_info_t)0x0004U)
|
||||
#define HTTPP_REQUEST_HAS_RESPONSE_BODY ((httpp_request_info_t)0x0010U)
|
||||
#define HTTPP_REQUEST_HAS_REQUEST_BODY ((httpp_request_info_t)0x0100U)
|
||||
#define HTTPP_REQUEST_HAS_OPTIONAL_REQUEST_BODY ((httpp_request_info_t)0x0200U)
|
||||
|
||||
typedef struct http_var_tag http_var_t;
|
||||
struct http_var_tag {
|
||||
char *name;
|
||||
@ -82,6 +90,7 @@ typedef struct http_parser_tag {
|
||||
} http_parser_t;
|
||||
|
||||
#ifdef _mangle
|
||||
# define httpp_request_info _mangle(httpp_request_info)
|
||||
# define httpp_create_parser _mangle(httpp_create_parser)
|
||||
# define httpp_initialize _mangle(httpp_initialize)
|
||||
# define httpp_parse _mangle(httpp_parse)
|
||||
@ -99,6 +108,8 @@ typedef struct http_parser_tag {
|
||||
# define httpp_clear _mangle(httpp_clear)
|
||||
#endif
|
||||
|
||||
httpp_request_info_t httpp_request_info(httpp_request_type_e req);
|
||||
|
||||
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, const char *http_data, unsigned long len);
|
||||
|
Loading…
Reference in New Issue
Block a user