aboutsummaryrefslogtreecommitdiff
path: root/src/request.c
diff options
context:
space:
mode:
authorAleksey Veresov <aleksey@veresov.pro>2020-03-09 18:06:10 +0300
committerAleksey Veresov <aleksey@veresov.pro>2020-03-09 18:06:10 +0300
commit18ce121d4243358bc55a0474a529efe2580a0610 (patch)
tree046805a312734ed2b477b6782d66e754e928f371 /src/request.c
parent8869f95373fa61cd425da31dbc5e2b1b536363d3 (diff)
downloadmagi-18ce121d4243358bc55a0474a529efe2580a0610.tar
magi-18ce121d4243358bc55a0474a529efe2580a0610.tar.xz
magi-18ce121d4243358bc55a0474a529efe2580a0610.zip
[magi]
Diffstat (limited to 'src/request.c')
-rw-r--r--src/request.c124
1 files changed, 70 insertions, 54 deletions
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 <stdlib.h>
-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);
+}