summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_http_variables.c
diff options
context:
space:
mode:
authorValentin Bartenev <vbart@nginx.com>2020-08-13 02:46:54 +0300
committerValentin Bartenev <vbart@nginx.com>2020-08-13 02:46:54 +0300
commit93146616cf56a94fc2979cb978c7b451c5592594 (patch)
treedb840e75ef2c08731e699b4eb44641ad6639c2ca /src/nxt_http_variables.c
parent21ac95f17e70f2f20fe8e2a99bbe9cc7328a6e62 (diff)
downloadunit-93146616cf56a94fc2979cb978c7b451c5592594.tar.gz
unit-93146616cf56a94fc2979cb978c7b451c5592594.tar.bz2
Basic variables support.
Diffstat (limited to '')
-rw-r--r--src/nxt_http_variables.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/nxt_http_variables.c b/src/nxt_http_variables.c
new file mode 100644
index 00000000..222d717c
--- /dev/null
+++ b/src/nxt_http_variables.c
@@ -0,0 +1,59 @@
+
+/*
+ * Copyright (C) NGINX, Inc.
+ */
+
+#include <nxt_router.h>
+#include <nxt_http.h>
+
+
+static nxt_int_t nxt_http_var_method(nxt_task_t *task, nxt_var_query_t *query,
+ nxt_str_t *str, void *ctx);
+static nxt_int_t nxt_http_var_uri(nxt_task_t *task, nxt_var_query_t *query,
+ nxt_str_t *str, void *ctx);
+
+
+static nxt_var_decl_t nxt_http_vars[] = {
+ { nxt_string("method"),
+ &nxt_http_var_method,
+ 0 },
+
+ { nxt_string("uri"),
+ &nxt_http_var_uri,
+ 0 },
+};
+
+
+nxt_int_t
+nxt_http_register_variables(void)
+{
+ return nxt_var_register(nxt_http_vars, nxt_nitems(nxt_http_vars));
+}
+
+
+static nxt_int_t
+nxt_http_var_method(nxt_task_t *task, nxt_var_query_t *query, nxt_str_t *str,
+ void *ctx)
+{
+ nxt_http_request_t *r;
+
+ r = ctx;
+
+ *str = *r->method;
+
+ return NXT_OK;
+}
+
+
+static nxt_int_t
+nxt_http_var_uri(nxt_task_t *task, nxt_var_query_t *query, nxt_str_t *str,
+ void *ctx)
+{
+ nxt_http_request_t *r;
+
+ r = ctx;
+
+ *str = *r->path;
+
+ return NXT_OK;
+}