diff options
Diffstat (limited to 'examples/upload.c')
-rw-r--r-- | examples/upload.c | 51 |
1 files changed, 27 insertions, 24 deletions
diff --git a/examples/upload.c b/examples/upload.c index 1877d39..158dcad 100644 --- a/examples/upload.c +++ b/examples/upload.c @@ -1,23 +1,22 @@ #include <magi.h> #include <stdio.h> -#include <stdlib.h> -#include <string.h> -void response_request(magi_request *req, magi_response *res) +void response(magi_request *r) { - char *name = magi_param_list_get(req->params, "name"); - magi_file *data = magi_file_list_get(req->files, "data"); - if (name && data) { - rename("data", name); - } - - magi_response_add(res, + char *name = magi_request_param(r, "name"); + magi_file *data = magi_request_file(r, "data"); + magi_response_add(r, "<!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'>" "<head><title>Upload File</title></head>" - "<body>" + "<body>"); + if (name && data) { + rename("data", name); + magi_response_add(r, "<p>Uploaded!</p>"); + } + magi_response_add(r, "<form action='/cgi-bin/upload' method='post' " "enctype='multipart/form-data'><fieldset>" "<input type='text' name='name' value='filename'/>" @@ -28,22 +27,26 @@ void response_request(magi_request *req, magi_response *res) "</html>"); } +void get(magi_request *r) +{ + magi_loadfiles rules; + magi_loadfiles_init(&rules); + magi_loadfiles_add(&rules, "data", "data", 0); + magi_loadfiles_set(&r, &rules); + magi_cgi(&r); + magi_loadfiles_free(&rules); +} + int main(int argc, char const *argv[]) { - magi_request request; - magi_tempfiles tmps = { 0, 0 }; - magi_request_setup(&request); - magi_tempfiles_add(&tmps, "data", "data", 0); - magi_request_setup_tempfiles(&request, &tmps); - if (magi_request_full_cgi(&request)) { - magi_response response; - magi_response_setup(&response); - response_request(&request, &response); - magi_response_cgi(&response); + magi_request request; + magi_request_init(request); + get(&request); + if (request.error) { + magi_response_error(&request); } else { - magi_error_cgi(request.error); + response(&request); } - magi_tempfiles_destroy(&tmps); - magi_request_destroy(&request); + magi_request_free(&request); return 0; } |