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_str_t *str, 11 void *ctx); 12 static nxt_int_t nxt_http_var_request_uri(nxt_task_t *task, nxt_str_t *str, 13 void *ctx); 14 static nxt_int_t nxt_http_var_uri(nxt_task_t *task, nxt_str_t *str, void *ctx); 15 static nxt_int_t nxt_http_var_host(nxt_task_t *task, nxt_str_t *str, void *ctx); 16 17 18 static nxt_var_decl_t nxt_http_vars[] = { 19 { nxt_string("method"), 20 &nxt_http_var_method, 21 0 }, 22 23 { nxt_string("request_uri"), 24 &nxt_http_var_request_uri, 25 0 }, 26 27 { nxt_string("uri"), 28 &nxt_http_var_uri, 29 0 }, 30 31 { nxt_string("host"), 32 &nxt_http_var_host, 33 0 }, 34 }; 35 36 37 nxt_int_t 38 nxt_http_register_variables(void) 39 { 40 return nxt_var_register(nxt_http_vars, nxt_nitems(nxt_http_vars)); 41 } 42 43 44 static nxt_int_t 45 nxt_http_var_method(nxt_task_t *task, nxt_str_t *str, void *ctx) 46 { 47 nxt_http_request_t *r; 48 49 r = ctx; 50 51 *str = *r->method; 52 53 return NXT_OK; 54 } 55 56 57 static nxt_int_t 58 nxt_http_var_request_uri(nxt_task_t *task, nxt_str_t *str, void *ctx) 59 { 60 nxt_http_request_t *r; 61 62 r = ctx; 63 64 *str = r->target; 65 66 return NXT_OK; 67 } 68 69 70 static nxt_int_t 71 nxt_http_var_uri(nxt_task_t *task, nxt_str_t *str, void *ctx) 72 { 73 nxt_http_request_t *r; 74 75 r = ctx; 76 77 *str = *r->path; 78 79 return NXT_OK; 80 } 81 82 83 static nxt_int_t 84 nxt_http_var_host(nxt_task_t *task, nxt_str_t *str, void *ctx) 85 { 86 nxt_http_request_t *r; 87 88 r = ctx; 89 90 *str = r->host; 91 92 return NXT_OK; 93 } 94