@@ -45,7 +45,7 @@ impl ResponseBuilder {
45
45
self
46
46
}
47
47
48
- pub fn build ( self , resp : ResponseOutparam ) {
48
+ pub fn send ( self , resp : ResponseOutparam ) {
49
49
let resp_tx = OutgoingResponse :: new ( self . headers ) ;
50
50
let _ = resp_tx. set_status_code ( self . status_code ) ;
51
51
@@ -78,14 +78,14 @@ pub fn parse_body(req: IncomingRequest) -> Result<Vec<u8>, String> {
78
78
let mut request_body = Vec :: new ( ) ;
79
79
let stream = match req. consume ( ) {
80
80
Ok ( stream) => stream,
81
- Err ( _ ) => {
81
+ Err ( _e ) => {
82
82
return Err ( "Failed to consume request stream" . to_string ( ) ) ;
83
83
}
84
84
} ;
85
85
let stream = match stream. stream ( ) {
86
86
Ok ( stream) => stream,
87
- Err ( _ ) => {
88
- return Err ( "Failed to get request stream" . to_string ( ) ) ;
87
+ Err ( _e ) => {
88
+ return Err ( "Failed to get request stream: " . to_string ( ) ) ;
89
89
}
90
90
} ;
91
91
@@ -108,3 +108,76 @@ pub fn parse_body(req: IncomingRequest) -> Result<Vec<u8>, String> {
108
108
}
109
109
Ok ( request_body)
110
110
}
111
+
112
+ pub fn build_response ( body : & str , status_code : u16 , content_type : & str ) -> ResponseBuilder {
113
+ let mut builder = ResponseBuilder :: new ( ) ;
114
+ builder
115
+ . set_header ( "content-type" , content_type)
116
+ . set_status_code ( status_code)
117
+ . set_body ( body) ;
118
+ builder
119
+ }
120
+ pub fn build_response_html ( body : & str , status_code : u16 ) -> ResponseBuilder {
121
+ build_response ( body, status_code, "text/html; charset=utf-8" )
122
+ }
123
+
124
+ #[ allow( dead_code) ]
125
+ pub fn build_response_json ( body : & str , status_code : u16 ) -> ResponseBuilder {
126
+ build_response ( body, status_code, "application/json" )
127
+ }
128
+
129
+ #[ allow( dead_code) ]
130
+ pub fn build_response_json_error ( message : & str , status_code : u16 ) -> ResponseBuilder {
131
+ let body = format ! ( "{{\" error\" : \" {message}\" }}" ) ;
132
+ build_response_json ( & body, status_code)
133
+ }
134
+
135
+ //#[cfg(test)]
136
+ //mod tests {
137
+ // use super::*;
138
+ //
139
+ // // Test ResponseBuilder header and status
140
+ // #[test]
141
+ // fn test_response_builder_setters() {
142
+ // let mut builder = ResponseBuilder::new();
143
+ // builder //.set_header("foo", "bar")
144
+ // .set_status_code(404)
145
+ // .set_body("hello world");
146
+ // assert_eq!(builder.status_code, 404);
147
+ // assert_eq!(builder.body_content.as_deref(), Some("hello world"));
148
+ // let headers_map = parse_headers(&builder.headers);
149
+ // assert!(headers_map.contains_key("foo"));
150
+ // assert_eq!(headers_map.get("foo").unwrap(), &vec!["bar".to_string()]);
151
+ // }
152
+ //
153
+ // #[test]
154
+ // fn test_build_response_plain_text() {
155
+ // let response = build_response("abc", 200, "text/plain");
156
+ // assert_eq!(response.status_code, 200);
157
+ // }
158
+ //
159
+ // #[test]
160
+ // fn test_build_response_html() {
161
+ // let response = build_response_html("abc", 201);
162
+ // assert_eq!(response.status_code, 201);
163
+ // }
164
+ //
165
+ // #[test]
166
+ // fn test_build_response_json() {
167
+ // let response = build_response_json("{\"a\":1}", 202);
168
+ // assert_eq!(response.status_code, 202);
169
+ // }
170
+ //
171
+ // #[test]
172
+ // fn test_send_error_json() {
173
+ // let response = build_response_json_error("fail", 500);
174
+ // assert_eq!(response.status_code, 500);
175
+ // }
176
+ //
177
+ // #[test]
178
+ // fn test_response_builder_default() {
179
+ // let builder = ResponseBuilder::default();
180
+ // assert_eq!(builder.status_code, 200);
181
+ // assert!(builder.body_content.is_none());
182
+ // }
183
+ //}
0 commit comments