rust_web_server/app/
mod.rs1#[cfg(test)]
2mod tests;
3
4pub mod controller;
5
6use crate::app::controller::favicon::FaviconController;
7use crate::app::controller::health::HealthController;
8use crate::app::controller::ready::ReadyController;
9use crate::app::controller::metrics::MetricsController;
10use crate::app::controller::file::initiate::FileUploadInitiateController;
11use crate::app::controller::form::get_method::FormGetMethodController;
12use crate::app::controller::form::multipart_enctype_post_method::FormMultipartEnctypePostMethodController;
13use crate::app::controller::form::url_encoded_enctype_post_method::FormUrlEncodedEnctypePostMethodController;
14use crate::app::controller::index::IndexController;
15use crate::app::controller::not_found::NotFoundController;
16use crate::app::controller::script::ScriptController;
17use crate::app::controller::static_resource::StaticResourceController;
18use crate::app::controller::style::StyleController;
19use crate::application::Application;
20use crate::controller::Controller;
21use crate::core::{New};
22use crate::header::Header;
23
24use crate::request::{Request};
25use crate::response::{Response, STATUS_CODE_REASON_PHRASE};
26use crate::server::ConnectionInfo;
27
28#[derive(Copy, Clone)]
29pub struct App {}
30
31impl New for App {
32 fn new() -> Self {
33 App{}
34 }
35}
36
37impl Application for App {
38 fn execute(&self, request: &Request, connection: &ConnectionInfo) -> Result<Response, String> {
39 let header_list = Header::get_header_list(&request);
40
41 let mut response: Response = Response::get_response(
42 STATUS_CODE_REASON_PHRASE.n501_not_implemented,
43 Some(header_list),
44 None
45 );
46
47
48
49 if IndexController::is_matching(&request, connection) {
50 response = IndexController::process(&request, response, connection);
51 return Ok(response)
52 }
53
54 if StyleController::is_matching(&request, connection) {
55 response = StyleController::process(&request, response, connection);
56 return Ok(response)
57 }
58
59 if ScriptController::is_matching(&request, connection) {
60 response = ScriptController::process(&request, response, connection);
61 return Ok(response)
62 }
63
64 if FileUploadInitiateController::is_matching(&request, connection) {
65 response = FileUploadInitiateController::process(&request, response, connection);
66 return Ok(response)
67 }
68
69 if FormUrlEncodedEnctypePostMethodController::is_matching(&request, connection) {
70 response = FormUrlEncodedEnctypePostMethodController::process(&request, response, connection);
71 return Ok(response)
72 }
73
74 if FormGetMethodController::is_matching(&request, connection) {
75 response = FormGetMethodController::process(&request, response, connection);
76 return Ok(response)
77 }
78
79 if FormMultipartEnctypePostMethodController::is_matching(&request, connection) {
80 response = FormMultipartEnctypePostMethodController::process(&request, response, connection);
81 return Ok(response)
82 }
83
84 if HealthController::is_matching(&request, connection) {
85 response = HealthController::process(&request, response, connection);
86 return Ok(response)
87 }
88
89 if ReadyController::is_matching(&request, connection) {
90 response = ReadyController::process(&request, response, connection);
91 return Ok(response)
92 }
93
94 if MetricsController::is_matching(&request, connection) {
95 response = MetricsController::process(&request, response, connection);
96 return Ok(response)
97 }
98
99 if FaviconController::is_matching(&request, connection) {
100 response = FaviconController::process(&request, response, connection);
101 return Ok(response)
102 }
103
104 if StaticResourceController::is_matching(&request, connection) {
105 response = StaticResourceController::process(&request, response, connection);
106 return Ok(response)
107 }
108
109 if NotFoundController::is_matching(&request, connection) {
110 response = NotFoundController::process(&request, response, connection);
111 return Ok(response)
112 }
113
114
115 Ok(response)
116 }
117}
118
119impl App {
120 pub fn handle_request(request: Request) -> (Response, Request) {
121 let header_list = Header::get_header_list(&request);
122
123 let mut response: Response = Response::get_response(
124 STATUS_CODE_REASON_PHRASE.n501_not_implemented,
125 Some(header_list),
126 None
127 );
128
129
130
131 if IndexController::is_matching_request(&request) {
132 response = IndexController::process_request(&request, response);
133 return (response, request)
134 }
135
136 if StyleController::is_matching_request(&request) {
137 response = StyleController::process_request(&request, response);
138 return (response, request)
139 }
140
141 if ScriptController::is_matching_request(&request) {
142 response = ScriptController::process_request(&request, response);
143 return (response, request)
144 }
145
146 if FileUploadInitiateController::is_matching_request(&request) {
147 response = FileUploadInitiateController::process_request(&request, response);
148 return (response, request)
149 }
150
151 if FormUrlEncodedEnctypePostMethodController::is_matching_request(&request) {
152 response = FormUrlEncodedEnctypePostMethodController::process_request(&request, response);
153 return (response, request)
154 }
155
156 if FormGetMethodController::is_matching_request(&request) {
157 response = FormGetMethodController::process_request(&request, response);
158 return (response, request)
159 }
160
161 if FormMultipartEnctypePostMethodController::is_matching_request(&request) {
162 response = FormMultipartEnctypePostMethodController::process_request(&request, response);
163 return (response, request)
164 }
165
166 if HealthController::is_matching_request(&request) {
167 response = HealthController::process_request(&request, response);
168 return (response, request)
169 }
170
171 if ReadyController::is_matching_request(&request) {
172 response = ReadyController::process_request(&request, response);
173 return (response, request)
174 }
175
176 if MetricsController::is_matching_request(&request) {
177 response = MetricsController::process_request(&request, response);
178 return (response, request)
179 }
180
181 if FaviconController::is_matching_request(&request) {
182 response = FaviconController::process_request(&request, response);
183 return (response, request)
184 }
185
186 if StaticResourceController::is_matching_request(&request) {
187 response = StaticResourceController::process_request(&request, response);
188 return (response, request)
189 }
190
191 if NotFoundController::is_matching_request(&request) {
192 response = NotFoundController::process_request(&request, response);
193 return (response, request)
194 }
195
196
197 (response, request)
198 }
199
200}