1*1624Smax.romanov@nginx.com 
2*1624Smax.romanov@nginx.com /*
3*1624Smax.romanov@nginx.com  * Copyright (C) NGINX, Inc.
4*1624Smax.romanov@nginx.com  */
5*1624Smax.romanov@nginx.com 
6*1624Smax.romanov@nginx.com 
7*1624Smax.romanov@nginx.com #include <python/nxt_python.h>
8*1624Smax.romanov@nginx.com 
9*1624Smax.romanov@nginx.com #if (NXT_HAVE_ASGI)
10*1624Smax.romanov@nginx.com 
11*1624Smax.romanov@nginx.com #include <nxt_main.h>
12*1624Smax.romanov@nginx.com #include <python/nxt_python_asgi_str.h>
13*1624Smax.romanov@nginx.com 
14*1624Smax.romanov@nginx.com 
15*1624Smax.romanov@nginx.com PyObject  *nxt_py_1_0_str;
16*1624Smax.romanov@nginx.com PyObject  *nxt_py_1_1_str;
17*1624Smax.romanov@nginx.com PyObject  *nxt_py_2_0_str;
18*1624Smax.romanov@nginx.com PyObject  *nxt_py_2_1_str;
19*1624Smax.romanov@nginx.com PyObject  *nxt_py_3_0_str;
20*1624Smax.romanov@nginx.com PyObject  *nxt_py_add_done_callback_str;
21*1624Smax.romanov@nginx.com PyObject  *nxt_py_asgi_str;
22*1624Smax.romanov@nginx.com PyObject  *nxt_py_bad_state_str;
23*1624Smax.romanov@nginx.com PyObject  *nxt_py_body_str;
24*1624Smax.romanov@nginx.com PyObject  *nxt_py_bytes_str;
25*1624Smax.romanov@nginx.com PyObject  *nxt_py_client_str;
26*1624Smax.romanov@nginx.com PyObject  *nxt_py_code_str;
27*1624Smax.romanov@nginx.com PyObject  *nxt_py_done_str;
28*1624Smax.romanov@nginx.com PyObject  *nxt_py_exception_str;
29*1624Smax.romanov@nginx.com PyObject  *nxt_py_failed_to_send_body_str;
30*1624Smax.romanov@nginx.com PyObject  *nxt_py_headers_str;
31*1624Smax.romanov@nginx.com PyObject  *nxt_py_http_str;
32*1624Smax.romanov@nginx.com PyObject  *nxt_py_http_disconnect_str;
33*1624Smax.romanov@nginx.com PyObject  *nxt_py_http_request_str;
34*1624Smax.romanov@nginx.com PyObject  *nxt_py_http_version_str;
35*1624Smax.romanov@nginx.com PyObject  *nxt_py_https_str;
36*1624Smax.romanov@nginx.com PyObject  *nxt_py_lifespan_str;
37*1624Smax.romanov@nginx.com PyObject  *nxt_py_lifespan_shutdown_str;
38*1624Smax.romanov@nginx.com PyObject  *nxt_py_lifespan_startup_str;
39*1624Smax.romanov@nginx.com PyObject  *nxt_py_method_str;
40*1624Smax.romanov@nginx.com PyObject  *nxt_py_message_str;
41*1624Smax.romanov@nginx.com PyObject  *nxt_py_message_too_big_str;
42*1624Smax.romanov@nginx.com PyObject  *nxt_py_more_body_str;
43*1624Smax.romanov@nginx.com PyObject  *nxt_py_path_str;
44*1624Smax.romanov@nginx.com PyObject  *nxt_py_query_string_str;
45*1624Smax.romanov@nginx.com PyObject  *nxt_py_raw_path_str;
46*1624Smax.romanov@nginx.com PyObject  *nxt_py_result_str;
47*1624Smax.romanov@nginx.com PyObject  *nxt_py_root_path_str;
48*1624Smax.romanov@nginx.com PyObject  *nxt_py_scheme_str;
49*1624Smax.romanov@nginx.com PyObject  *nxt_py_server_str;
50*1624Smax.romanov@nginx.com PyObject  *nxt_py_set_exception_str;
51*1624Smax.romanov@nginx.com PyObject  *nxt_py_set_result_str;
52*1624Smax.romanov@nginx.com PyObject  *nxt_py_spec_version_str;
53*1624Smax.romanov@nginx.com PyObject  *nxt_py_status_str;
54*1624Smax.romanov@nginx.com PyObject  *nxt_py_subprotocol_str;
55*1624Smax.romanov@nginx.com PyObject  *nxt_py_subprotocols_str;
56*1624Smax.romanov@nginx.com PyObject  *nxt_py_text_str;
57*1624Smax.romanov@nginx.com PyObject  *nxt_py_type_str;
58*1624Smax.romanov@nginx.com PyObject  *nxt_py_version_str;
59*1624Smax.romanov@nginx.com PyObject  *nxt_py_websocket_str;
60*1624Smax.romanov@nginx.com PyObject  *nxt_py_websocket_accept_str;
61*1624Smax.romanov@nginx.com PyObject  *nxt_py_websocket_close_str;
62*1624Smax.romanov@nginx.com PyObject  *nxt_py_websocket_connect_str;
63*1624Smax.romanov@nginx.com PyObject  *nxt_py_websocket_disconnect_str;
64*1624Smax.romanov@nginx.com PyObject  *nxt_py_websocket_receive_str;
65*1624Smax.romanov@nginx.com PyObject  *nxt_py_websocket_send_str;
66*1624Smax.romanov@nginx.com PyObject  *nxt_py_ws_str;
67*1624Smax.romanov@nginx.com PyObject  *nxt_py_wss_str;
68*1624Smax.romanov@nginx.com 
69*1624Smax.romanov@nginx.com static nxt_python_string_t nxt_py_asgi_strings[] = {
70*1624Smax.romanov@nginx.com     { nxt_string("1.0"), &nxt_py_1_0_str },
71*1624Smax.romanov@nginx.com     { nxt_string("1.1"), &nxt_py_1_1_str },
72*1624Smax.romanov@nginx.com     { nxt_string("2.0"), &nxt_py_2_0_str },
73*1624Smax.romanov@nginx.com     { nxt_string("2.1"), &nxt_py_2_1_str },
74*1624Smax.romanov@nginx.com     { nxt_string("3.0"), &nxt_py_3_0_str },
75*1624Smax.romanov@nginx.com     { nxt_string("add_done_callback"), &nxt_py_add_done_callback_str },
76*1624Smax.romanov@nginx.com     { nxt_string("asgi"), &nxt_py_asgi_str },
77*1624Smax.romanov@nginx.com     { nxt_string("bad state"), &nxt_py_bad_state_str },
78*1624Smax.romanov@nginx.com     { nxt_string("body"), &nxt_py_body_str },
79*1624Smax.romanov@nginx.com     { nxt_string("bytes"), &nxt_py_bytes_str },
80*1624Smax.romanov@nginx.com     { nxt_string("client"), &nxt_py_client_str },
81*1624Smax.romanov@nginx.com     { nxt_string("code"), &nxt_py_code_str },
82*1624Smax.romanov@nginx.com     { nxt_string("done"), &nxt_py_done_str },
83*1624Smax.romanov@nginx.com     { nxt_string("exception"), &nxt_py_exception_str },
84*1624Smax.romanov@nginx.com     { nxt_string("failed to send body"), &nxt_py_failed_to_send_body_str },
85*1624Smax.romanov@nginx.com     { nxt_string("headers"), &nxt_py_headers_str },
86*1624Smax.romanov@nginx.com     { nxt_string("http"), &nxt_py_http_str },
87*1624Smax.romanov@nginx.com     { nxt_string("http.disconnect"), &nxt_py_http_disconnect_str },
88*1624Smax.romanov@nginx.com     { nxt_string("http.request"), &nxt_py_http_request_str },
89*1624Smax.romanov@nginx.com     { nxt_string("http_version"), &nxt_py_http_version_str },
90*1624Smax.romanov@nginx.com     { nxt_string("https"), &nxt_py_https_str },
91*1624Smax.romanov@nginx.com     { nxt_string("lifespan"), &nxt_py_lifespan_str },
92*1624Smax.romanov@nginx.com     { nxt_string("lifespan.shutdown"), &nxt_py_lifespan_shutdown_str },
93*1624Smax.romanov@nginx.com     { nxt_string("lifespan.startup"), &nxt_py_lifespan_startup_str },
94*1624Smax.romanov@nginx.com     { nxt_string("message"), &nxt_py_message_str },
95*1624Smax.romanov@nginx.com     { nxt_string("message too big"), &nxt_py_message_too_big_str },
96*1624Smax.romanov@nginx.com     { nxt_string("method"), &nxt_py_method_str },
97*1624Smax.romanov@nginx.com     { nxt_string("more_body"), &nxt_py_more_body_str },
98*1624Smax.romanov@nginx.com     { nxt_string("path"), &nxt_py_path_str },
99*1624Smax.romanov@nginx.com     { nxt_string("query_string"), &nxt_py_query_string_str },
100*1624Smax.romanov@nginx.com     { nxt_string("raw_path"), &nxt_py_raw_path_str },
101*1624Smax.romanov@nginx.com     { nxt_string("result"), &nxt_py_result_str },
102*1624Smax.romanov@nginx.com     { nxt_string("root_path"), &nxt_py_root_path_str }, // not used
103*1624Smax.romanov@nginx.com     { nxt_string("scheme"), &nxt_py_scheme_str },
104*1624Smax.romanov@nginx.com     { nxt_string("server"), &nxt_py_server_str },
105*1624Smax.romanov@nginx.com     { nxt_string("set_exception"), &nxt_py_set_exception_str },
106*1624Smax.romanov@nginx.com     { nxt_string("set_result"), &nxt_py_set_result_str },
107*1624Smax.romanov@nginx.com     { nxt_string("spec_version"), &nxt_py_spec_version_str },
108*1624Smax.romanov@nginx.com     { nxt_string("status"), &nxt_py_status_str },
109*1624Smax.romanov@nginx.com     { nxt_string("subprotocol"), &nxt_py_subprotocol_str },
110*1624Smax.romanov@nginx.com     { nxt_string("subprotocols"), &nxt_py_subprotocols_str },
111*1624Smax.romanov@nginx.com     { nxt_string("text"), &nxt_py_text_str },
112*1624Smax.romanov@nginx.com     { nxt_string("type"), &nxt_py_type_str },
113*1624Smax.romanov@nginx.com     { nxt_string("version"), &nxt_py_version_str },
114*1624Smax.romanov@nginx.com     { nxt_string("websocket"), &nxt_py_websocket_str },
115*1624Smax.romanov@nginx.com     { nxt_string("websocket.accept"), &nxt_py_websocket_accept_str },
116*1624Smax.romanov@nginx.com     { nxt_string("websocket.close"), &nxt_py_websocket_close_str },
117*1624Smax.romanov@nginx.com     { nxt_string("websocket.connect"), &nxt_py_websocket_connect_str },
118*1624Smax.romanov@nginx.com     { nxt_string("websocket.disconnect"), &nxt_py_websocket_disconnect_str },
119*1624Smax.romanov@nginx.com     { nxt_string("websocket.receive"), &nxt_py_websocket_receive_str },
120*1624Smax.romanov@nginx.com     { nxt_string("websocket.send"), &nxt_py_websocket_send_str },
121*1624Smax.romanov@nginx.com     { nxt_string("ws"), &nxt_py_ws_str },
122*1624Smax.romanov@nginx.com     { nxt_string("wss"), &nxt_py_wss_str },
123*1624Smax.romanov@nginx.com     { nxt_null_string, NULL },
124*1624Smax.romanov@nginx.com };
125*1624Smax.romanov@nginx.com 
126*1624Smax.romanov@nginx.com 
127*1624Smax.romanov@nginx.com nxt_int_t
128*1624Smax.romanov@nginx.com nxt_py_asgi_str_init(void)
129*1624Smax.romanov@nginx.com {
130*1624Smax.romanov@nginx.com     return nxt_python_init_strings(nxt_py_asgi_strings);
131*1624Smax.romanov@nginx.com }
132*1624Smax.romanov@nginx.com 
133*1624Smax.romanov@nginx.com 
134*1624Smax.romanov@nginx.com void
135*1624Smax.romanov@nginx.com nxt_py_asgi_str_done(void)
136*1624Smax.romanov@nginx.com {
137*1624Smax.romanov@nginx.com     nxt_python_done_strings(nxt_py_asgi_strings);
138*1624Smax.romanov@nginx.com }
139*1624Smax.romanov@nginx.com 
140*1624Smax.romanov@nginx.com 
141*1624Smax.romanov@nginx.com #endif /* NXT_HAVE_ASGI */
142