diff options
author | Aleksey Veresov <aleksey@veresov.pro> | 2019-11-22 18:55:54 +0300 |
---|---|---|
committer | Aleksey Veresov <aleksey@veresov.pro> | 2019-11-22 18:55:54 +0300 |
commit | 88081d9a4376b1ee4feed3bc843c46096e087b1e (patch) | |
tree | 5780b195f16975e890a8a98b0dc17d6ce2da3001 /examples/upload.c | |
parent | 0f6943feff48e92b071726abcf83070d8a529a41 (diff) | |
download | magi-88081d9a4376b1ee4feed3bc843c46096e087b1e.tar magi-88081d9a4376b1ee4feed3bc843c46096e087b1e.tar.xz magi-88081d9a4376b1ee4feed3bc843c46096e087b1e.zip |
.
Diffstat (limited to 'examples/upload.c')
-rw-r--r-- | examples/upload.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/examples/upload.c b/examples/upload.c index 2ef8bc5..25fefaf 100644 --- a/examples/upload.c +++ b/examples/upload.c @@ -1,15 +1,17 @@ #include <cgi.h> #include <multipart.h> #include <request.h> +#include <response.h> #include <stdio.h> #include <stdlib.h> #include <string.h> void tempfile_callback(struct magi_file * file, - char * buffer, - int len, - void * _) + char * addon, + int addon_len, + int is_addon_last, + void * unused) { if (!strcmp(file->param_name, "data")) { static FILE * f = 0; @@ -17,10 +19,10 @@ void tempfile_callback(struct magi_file * file, remove(file->param_name); f = fopen(file->param_name, "wb"); } - if (len) { - fwrite(buffer, 1, len, f); + if (addon_len) { + fwrite(addon, 1, addon_len, f); } - if (len < magi_file_callback_portion_max) { + if (is_addon_last) { fclose(f); f = 0; } @@ -30,7 +32,7 @@ void tempfile_callback(struct magi_file * file, void response_request(struct magi_request * req, struct magi_response * res) { magi_response_content_type(res, magi_xhtml); - magi_response_content( + magi_response_add( res, "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' " "'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>" "<html xmlns='http://www.w3.org/1999/xhtml'>" @@ -45,8 +47,8 @@ void response_request(struct magi_request * req, struct magi_response * res) "</body>" "</html>"); - struct magi_field * name = magi_field_list_get(req->fields, "name"); - struct magi_field * data = magi_field_list_get(req->fields, "data"); + struct magi_param * name = magi_param_list_get(req->params, "name"); + struct magi_param * data = magi_param_list_get(req->params, "data"); if (name && name->data && data) { rename("data", name->data); } @@ -55,13 +57,15 @@ void response_request(struct magi_request * req, struct magi_response * res) int main(int argc, char const * argv[]) { struct magi_request request; - if (magi_cgi(&request, tempfile_callback, 0, 0)) { + magi_request_setup(&request); + request.file_callback = tempfile_callback; + if (magi_request_cgi(&request)) { struct magi_response response; response_request(&request, &response); - magi_cgi_response(&response); + magi_response_cgi(&response); magi_response_destroy(); } else { - magi_cgi_error(request.error); + magi_error_cgi(request.error); } magi_request_destroy(&request); return 0; |