From 18ce121d4243358bc55a0474a529efe2580a0610 Mon Sep 17 00:00:00 2001 From: Aleksey Veresov Date: Mon, 9 Mar 2020 18:06:10 +0300 Subject: [magi] --- src/request.c | 124 +++++++++++++++++++++++++++++++++------------------------- 1 file changed, 70 insertions(+), 54 deletions(-) (limited to 'src/request.c') diff --git a/src/request.c b/src/request.c index 3677eb7..2917508 100644 --- a/src/request.c +++ b/src/request.c @@ -1,80 +1,96 @@ #include "request.h" -#include "cookie.h" -#include "file.h" -#include "param.h" #include -void magi_request_setup(struct magi_request * request) +void magi_request_init(magi_request *request) { if (request) { - request->file_callback = 0; - request->file_callback_userdata = 0; - request->file_callback_addon_max = 64; - request->cookies_max = 1024 * 8; - request->url_params_max = 1024 * 2; - request->http_params_max = 1024 * 16; - request->params_max = 0; + request->callback.act = 0; + request->callback.userdata = 0; + request->callback.addon_max = 1024; + request->limits.cookies = 1024 * 16; + request->limits.params_meta = 1024 * 16; + request->limits.params_head = 1024 * 16; + request->limits.params_body = 1024 * 16; } } -static void request_free(struct magi_request * request) +static void request_free(magi_request *request) { free(request->cookies); - free(request->http_params); - free(request->url_params); - free(request->params); + free(request->meta); + free(request->head); + free(request->body); free(request->files); free(request->method); - free(request->uri); - free(request->document_root); - free(request->document_uri); - free(request->script_name); - free(request->script_filename); - free(request->remote_addr); - free(request->remote_port); - free(request->server_addr); - free(request->server_name); - free(request->server_port); - free(request->server_protocol); - free(request->server_software); - free(request->path_info); + free(request->address); + free(request->script); + free(request->path); } -static void request_annul(struct magi_request * request) +static void request_annul(magi_request *request) { - request->cookies = 0; - request->http_params = 0; - request->url_params = 0; - request->params = 0; - request->files = 0; - request->method = 0; - request->uri = 0; - request->document_root = 0; - request->document_uri = 0; - request->script_name = 0; - request->script_filename = 0; - request->remote_addr = 0; - request->remote_port = 0; - request->server_addr = 0; - request->server_name = 0; - request->server_port = 0; - request->server_protocol = 0; - request->server_software = 0; - request->path_info = 0; + request->cookies = 0; + request->meta = 0; + request->head = 0; + request->body = 0; + request->files = 0; + request->method = 0; + request->address = 0; + request->script = 0; + request->path = 0; } -void magi_request_destroy(struct magi_request * request) +void magi_request_free(magi_request *request) { if (request) { - magi_cookie_list_destroy(request->cookies); - magi_param_list_destroy(request->http_params); - magi_param_list_destroy(request->url_params); - magi_param_list_destroy(request->params); - magi_file_list_destroy(request->files); + magi_cookies_free(request->cookies); + magi_params_free(request->meta); + magi_params_free(request->head); + magi_params_free(request->body); + magi_files_free(request->files); request_free(request); request_annul(request); } } + + +char *magi_request_meta(magi_request *r, const char *name) +{ + return magi_params_get(r->meta, name); +} + +char *magi_request_param(magi_request *r, const char *name) +{ + char *res = magi_params_get(r->body, name); + if (!res) { + return magi_params_get(r->head, name); + } + return res; +} + +char *magi_request_urlparam(magi_request *r, const char *name) +{ + return magi_params_get(r->head, name); +} + +magi_file *magi_request_file(magi_request *r, const char *name) +{ + return magi_files_get(r->files, name); +} + +char *magi_request_cookie(magi_request *r, const char *name) +{ + magi_cookie *res = magi_cookies_get(r->cookies, name); + if (!res) { + return 0; + } + return res->data; +} + +magi_cookie *magi_request_cookie_complex(magi_request *r, const char *name) +{ + return magi_cookies_get(r->cookies, name); +} -- cgit v1.2.3