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