xref: /unit/src/nxt_http_variables.c (revision 2110:048281cd3d73)
1 
2 /*
3  * Copyright (C) NGINX, Inc.
4  */
5 
6 #include <nxt_router.h>
7 #include <nxt_http.h>
8 
9 
10 static nxt_int_t nxt_http_var_method(nxt_task_t *task, nxt_var_query_t *query,
11     nxt_str_t *str, void *ctx);
12 static nxt_int_t nxt_http_var_request_uri(nxt_task_t *task,
13     nxt_var_query_t *query, nxt_str_t *str, void *ctx);
14 static nxt_int_t nxt_http_var_uri(nxt_task_t *task, nxt_var_query_t *query,
15     nxt_str_t *str, void *ctx);
16 static nxt_int_t nxt_http_var_host(nxt_task_t *task, nxt_var_query_t *query,
17     nxt_str_t *str, void *ctx);
18 
19 
20 static nxt_var_decl_t  nxt_http_vars[] = {
21     { nxt_string("method"),
22       &nxt_http_var_method,
23       0 },
24 
25     { nxt_string("request_uri"),
26       &nxt_http_var_request_uri,
27       0 },
28 
29     { nxt_string("uri"),
30       &nxt_http_var_uri,
31       0 },
32 
33     { nxt_string("host"),
34       &nxt_http_var_host,
35       0 },
36 };
37 
38 
39 nxt_int_t
40 nxt_http_register_variables(void)
41 {
42     return nxt_var_register(nxt_http_vars, nxt_nitems(nxt_http_vars));
43 }
44 
45 
46 static nxt_int_t
47 nxt_http_var_method(nxt_task_t *task, nxt_var_query_t *query, nxt_str_t *str,
48     void *ctx)
49 {
50     nxt_http_request_t  *r;
51 
52     r = ctx;
53 
54     *str = *r->method;
55 
56     return NXT_OK;
57 }
58 
59 
60 static nxt_int_t
61 nxt_http_var_request_uri(nxt_task_t *task, nxt_var_query_t *query,
62     nxt_str_t *str, void *ctx)
63 {
64     nxt_http_request_t  *r;
65 
66     r = ctx;
67 
68     *str = r->target;
69 
70     return NXT_OK;
71 }
72 
73 
74 static nxt_int_t
75 nxt_http_var_uri(nxt_task_t *task, nxt_var_query_t *query, nxt_str_t *str,
76     void *ctx)
77 {
78     nxt_http_request_t  *r;
79 
80     r = ctx;
81 
82     *str = *r->path;
83 
84     return NXT_OK;
85 }
86 
87 
88 static nxt_int_t
89 nxt_http_var_host(nxt_task_t *task, nxt_var_query_t *query, nxt_str_t *str,
90     void *ctx)
91 {
92     nxt_http_request_t  *r;
93 
94     r = ctx;
95 
96     *str = r->host;
97 
98     return NXT_OK;
99 }
100