From d35a1d00b684b88c8bca80837f0c51c8da365f3d Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Sun, 26 Jul 2015 11:15:57 +0200 Subject: [PATCH] Added functions ZakCgiMain::isGet and ::isPost (closes #946). --- src/main.c | 42 ++++++++++++++++++++++++++++++++++++++++++ src/main.h | 3 +++ tests/env.c | 8 ++++++++ tests/querystring.c | 8 ++++++++ 4 files changed, 61 insertions(+) diff --git a/src/main.c b/src/main.c index c92302c..89e21ac 100644 --- a/src/main.c +++ b/src/main.c @@ -814,6 +814,48 @@ zak_cgi_main_redirect (const gchar *url) 13, 10); } +gboolean +zak_cgi_main_is_get (ZakCgiMain *zakcgimain) +{ + gboolean ret; + + GHashTable *ht; + + gchar *param; + + ret = FALSE; + + ht = zak_cgi_main_get_env (zakcgimain); + param = (gchar *)g_hash_table_lookup (ht, "REQUEST_METHOD"); + if (param != NULL) + { + ret = (g_strcmp0 (param, "GET") == 0); + } + + return ret; +} + +gboolean +zak_cgi_main_is_post (ZakCgiMain *zakcgimain) +{ + gboolean ret; + + GHashTable *ht; + + gchar *param; + + ret = FALSE; + + ht = zak_cgi_main_get_env (zakcgimain); + param = (gchar *)g_hash_table_lookup (ht, "REQUEST_METHOD"); + if (param != NULL) + { + ret = (g_strcmp0 (param, "POST") == 0); + } + + return ret; +} + /* PRIVATE */ static void zak_cgi_main_set_property (GObject *object, diff --git a/src/main.h b/src/main.h index c163009..05b2bc4 100644 --- a/src/main.h +++ b/src/main.h @@ -93,6 +93,9 @@ GHashTable *zak_cgi_main_parse_stdin (const gchar *buf, const gchar *boundary); void zak_cgi_main_redirect (const gchar *url); +gboolean zak_cgi_main_is_get (ZakCgiMain *zakcgimain); +gboolean zak_cgi_main_is_post (ZakCgiMain *zakcgimain); + G_END_DECLS diff --git a/tests/env.c b/tests/env.c index be53b5b..a604817 100644 --- a/tests/env.c +++ b/tests/env.c @@ -107,6 +107,14 @@ main (int argc, char *argv[]) { g_string_append_printf (str, "

\n\n"); + g_string_append_printf (str, + "\n", + zak_cgi_main_is_get (NULL) ? "TRUE" : "FALSE"); + + g_string_append_printf (str, + "\n", + zak_cgi_main_is_post (NULL) ? "TRUE" : "FALSE"); + g_hash_table_iter_init (&iter, ht); while (g_hash_table_iter_next (&iter, &key, &value)) { diff --git a/tests/querystring.c b/tests/querystring.c index 8aa8f1f..e69873c 100644 --- a/tests/querystring.c +++ b/tests/querystring.c @@ -38,6 +38,14 @@ main (int argc, char *argv[]) { g_string_append_printf (str, "
IS GET?%s
IS POST?%s
\n"); + g_string_append_printf (str, + "\n", + zak_cgi_main_is_get (NULL) ? "TRUE" : "FALSE"); + + g_string_append_printf (str, + "\n", + zak_cgi_main_is_post (NULL) ? "TRUE" : "FALSE"); + g_hash_table_iter_init (&iter, ht_env); while (g_hash_table_iter_next (&iter, &key, &value)) { -- 2.49.0
IS GET?%s
IS POST?%s