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 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);
|
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)
|
http_parser_t *httpp_create_parser(void)
|
||||||
{
|
{
|
||||||
return (http_parser_t *)malloc(sizeof(http_parser_t));
|
return (http_parser_t *)malloc(sizeof(http_parser_t));
|
||||||
|
@ -61,6 +61,14 @@ typedef enum httpp_request_type_tag {
|
|||||||
httpp_req_unknown
|
httpp_req_unknown
|
||||||
} httpp_request_type_e;
|
} 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;
|
typedef struct http_var_tag http_var_t;
|
||||||
struct http_var_tag {
|
struct http_var_tag {
|
||||||
char *name;
|
char *name;
|
||||||
@ -82,6 +90,7 @@ typedef struct http_parser_tag {
|
|||||||
} http_parser_t;
|
} http_parser_t;
|
||||||
|
|
||||||
#ifdef _mangle
|
#ifdef _mangle
|
||||||
|
# define httpp_request_info _mangle(httpp_request_info)
|
||||||
# define httpp_create_parser _mangle(httpp_create_parser)
|
# define httpp_create_parser _mangle(httpp_create_parser)
|
||||||
# define httpp_initialize _mangle(httpp_initialize)
|
# define httpp_initialize _mangle(httpp_initialize)
|
||||||
# define httpp_parse _mangle(httpp_parse)
|
# define httpp_parse _mangle(httpp_parse)
|
||||||
@ -99,6 +108,8 @@ typedef struct http_parser_tag {
|
|||||||
# define httpp_clear _mangle(httpp_clear)
|
# define httpp_clear _mangle(httpp_clear)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
httpp_request_info_t httpp_request_info(httpp_request_type_e req);
|
||||||
|
|
||||||
http_parser_t *httpp_create_parser(void);
|
http_parser_t *httpp_create_parser(void);
|
||||||
void httpp_initialize(http_parser_t *parser, http_varlist_t *defaults);
|
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);
|
int httpp_parse(http_parser_t *parser, const char *http_data, unsigned long len);
|
||||||
|
Loading…
Reference in New Issue
Block a user