add: generic response makers
This commit is contained in:
parent
2d992cfe3c
commit
6178ef3c7b
13 changed files with 200 additions and 503 deletions
include
62
include/endpoint.h
Normal file
62
include/endpoint.h
Normal file
|
@ -0,0 +1,62 @@
|
|||
#ifndef CORE_ENDPOINT_H
|
||||
#define CORE_ENDPOINT_H
|
||||
|
||||
#include <cJSON.h>
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ENDPOINT_ARG_TYPE_INT,
|
||||
ENDPOINT_ARG_TYPE_STR
|
||||
} endpoint_arg_type_e;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
endpoint_arg_type_e type;
|
||||
union
|
||||
{
|
||||
int v_int;
|
||||
const char *v_str;
|
||||
} value;
|
||||
} endpoint_args_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int status_code;
|
||||
const char *content_type;
|
||||
size_t content_length;
|
||||
const char *content;
|
||||
int alloced_content;
|
||||
} endpoint_response_t;
|
||||
|
||||
typedef void (*endpoint_func_f)(struct http_message *hm, endpoint_args_t *args, endpoint_response_t *response);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char *full_route;
|
||||
char **route;
|
||||
char *route_keeper;
|
||||
int method;
|
||||
int options;
|
||||
endpoint_func_f func;
|
||||
int trailing_slash;
|
||||
|
||||
int args_count;
|
||||
endpoint_args_t *args;
|
||||
|
||||
int possible_route;
|
||||
int args_found;
|
||||
} endpoint_t;
|
||||
|
||||
void
|
||||
endpoint_func_index(struct http_message *hm, endpoint_args_t *args, endpoint_response_t *response);
|
||||
|
||||
void
|
||||
endpoint_func_not_found(struct http_message *hm, endpoint_args_t *args, endpoint_response_t *response);
|
||||
|
||||
void
|
||||
endpoint_response_text(endpoint_response_t *response, int status_code, const char *content, int content_length);
|
||||
|
||||
void
|
||||
endpoint_response_json(endpoint_response_t *response, int status_code, const cJSON *json_root);
|
||||
|
||||
#endif /* CORE_ENDPOINT_H */
|
|
@ -2,14 +2,9 @@
|
|||
#define CORE_ROUTER_H
|
||||
|
||||
#include <mongoose.h>
|
||||
#include <endpoint.h>
|
||||
|
||||
#define ENDPOINTS_MAX_COUNT 128
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ENDPOINT_ARG_TYPE_INT,
|
||||
ENDPOINT_ARG_TYPE_STR
|
||||
} endpoint_arg_type_e;
|
||||
#define ROUTER_ENDPOINTS_MAX_COUNT 128
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
@ -20,44 +15,6 @@ typedef enum
|
|||
HTTP_METHOD_OPTIONS = (1 << 4)
|
||||
} http_method_e;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
endpoint_arg_type_e type;
|
||||
union
|
||||
{
|
||||
int v_int;
|
||||
const char *v_str;
|
||||
} value;
|
||||
} endpoint_args_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int status_code;
|
||||
const char *content_type;
|
||||
size_t content_length;
|
||||
const char *content;
|
||||
int alloced_content;
|
||||
} endpoint_response_t;
|
||||
|
||||
typedef void (*endpoint_func_f)(struct http_message *hm, endpoint_args_t *args, endpoint_response_t *response);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char *full_route;
|
||||
char **route;
|
||||
char *route_keeper;
|
||||
int method;
|
||||
int options;
|
||||
endpoint_func_f func;
|
||||
int trailing_slash;
|
||||
|
||||
int args_count;
|
||||
endpoint_args_t *args;
|
||||
|
||||
int possible_route;
|
||||
int args_found;
|
||||
} endpoint_t;
|
||||
|
||||
void
|
||||
router_init();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue