summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adam@chlipala.net>2011-01-06 14:45:52 -0500
committerGravatar Adam Chlipala <adam@chlipala.net>2011-01-06 14:45:52 -0500
commitc5a43df7d1f50803c3458fc994321defb45fd616 (patch)
tree790c9f91e1c73734d54ff436a0cfeb308885f0c1
parentef58d6735426a9ab3e6a7643c65926e362f7d157 (diff)
Basis.currentUrlHasPost
-rw-r--r--include/urweb.h3
-rw-r--r--lib/ur/basis.urs1
-rw-r--r--src/c/request.c1
-rw-r--r--src/c/urweb.c14
4 files changed, 16 insertions, 3 deletions
diff --git a/include/urweb.h b/include/urweb.h
index 6ce541d1..75f8e782 100644
--- a/include/urweb.h
+++ b/include/urweb.h
@@ -322,4 +322,7 @@ uw_Basis_string uw_queryString(uw_context);
uw_Basis_time *uw_Basis_readUtc(uw_context, uw_Basis_string);
+void uw_isPost(uw_context);
+uw_Basis_bool uw_Basis_currentUrlHasPost(uw_context);
+
#endif
diff --git a/lib/ur/basis.urs b/lib/ur/basis.urs
index b002a419..0938096b 100644
--- a/lib/ur/basis.urs
+++ b/lib/ur/basis.urs
@@ -634,6 +634,7 @@ val show_url : show url
val bless : string -> url
val checkUrl : string -> option url
val currentUrl : transaction url
+val currentUrlHasPost : transaction bool
val url : transaction page -> url
val effectfulUrl : (option queryString -> transaction page) -> url
val redirect : t ::: Type -> url -> transaction t
diff --git a/src/c/request.c b/src/c/request.c
index 8e824d8a..b4c3130b 100644
--- a/src/c/request.c
+++ b/src/c/request.c
@@ -230,6 +230,7 @@ request_result uw_request(uw_request_context rc, uw_context ctx,
}
is_post = 1;
+ uw_isPost(ctx);
clen_s = uw_Basis_requestHeader(ctx, "Content-type");
if (clen_s && !strncasecmp(clen_s, "multipart/form-data", 19)) {
diff --git a/src/c/urweb.c b/src/c/urweb.c
index b69fa31e..17e4bed2 100644
--- a/src/c/urweb.c
+++ b/src/c/urweb.c
@@ -442,7 +442,7 @@ struct uw_context {
void *logger_data;
uw_logger log_debug;
- int hasPostBody;
+ int isPost, hasPostBody;
uw_Basis_postBody postBody;
uw_Basis_string queryString;
@@ -508,7 +508,7 @@ uw_context uw_init(void *logger_data, uw_logger log_debug) {
ctx->logger_data = logger_data;
ctx->log_debug = log_debug;
- ctx->hasPostBody = 0;
+ ctx->isPost = ctx->hasPostBody = 0;
ctx->queryString = NULL;
@@ -588,7 +588,7 @@ void uw_reset_keep_error_message(uw_context ctx) {
ctx->cur_container = NULL;
ctx->used_transactionals = 0;
ctx->script_header = "";
- ctx->hasPostBody = 0;
+ ctx->isPost = ctx->hasPostBody = 0;
ctx->queryString = NULL;
}
@@ -3603,6 +3603,14 @@ int uw_hasPostBody(uw_context ctx) {
return ctx->hasPostBody;
}
+void uw_isPost(uw_context ctx) {
+ ctx->isPost = 1;
+}
+
+uw_Basis_bool uw_Basis_currentUrlHasPost(uw_context ctx) {
+ return ctx->isPost;
+}
+
void uw_setQueryString(uw_context ctx, uw_Basis_string s) {
ctx->queryString = s;
}