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