diff options
-rw-r--r-- | include/urweb.h | 3 | ||||
-rw-r--r-- | lib/ur/basis.urs | 1 | ||||
-rw-r--r-- | src/c/request.c | 1 | ||||
-rw-r--r-- | src/c/urweb.c | 14 |
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; } |