feat: small steps
							parent
							
								
									dfd27b579d
								
							
						
					
					
						commit
						f3fced908f
					
				|  | @ -10,6 +10,8 @@ | |||
| 
 | ||||
| extern const char http_404[]; | ||||
| extern const size_t http_404_len; | ||||
| extern const char http_405[]; | ||||
| extern const size_t http_405_len; | ||||
| extern const char http_500[]; | ||||
| extern const size_t http_500_len; | ||||
| 
 | ||||
|  | @ -24,4 +26,12 @@ http_parse_error http_parse_request(http_request *req, const char *path, | |||
| 
 | ||||
| void http_route(event_loop_conn *conn); | ||||
| 
 | ||||
| typedef enum http_response_type { | ||||
|   http_not_found = 404, | ||||
|   http_method_not_allowed = 405 | ||||
| } http_response_type; | ||||
| 
 | ||||
| void http_write_standard_response(event_loop_conn *conn, | ||||
|                                   http_response_type type); | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -5,6 +5,11 @@ const char http_404[] = "HTTP/1.1 404 Not Found\n" | |||
|                         "Content-Length: 0\n\n"; | ||||
| const size_t http_404_len = sizeof(http_404) - 1; | ||||
| 
 | ||||
| const char http_405[] = "HTTP/1.1 405 Method Not Allowed\n" | ||||
|                         "Connection: close\n" | ||||
|                         "Content-Length: 0\n\n"; | ||||
| const size_t http_405_len = sizeof(http_405) - 1; | ||||
| 
 | ||||
| const char http_500[] = "HTTP/1.1 500 Internal Server Error\n" | ||||
|                         "Connection: close\n" | ||||
|                         "Content-Length: 0\n\n"; | ||||
|  |  | |||
|  | @ -9,9 +9,5 @@ void http_route(event_loop_conn *conn) { | |||
|   // TODO routing
 | ||||
| 
 | ||||
|   // Fallthrough is to return a 404
 | ||||
|   memcpy(conn->wbuf, http_404, http_404_len); | ||||
| 
 | ||||
|   conn->state = event_loop_conn_state_res; | ||||
|   conn->wbuf_size = http_404_len; | ||||
|   conn->wbuf_sent = 0; | ||||
|   http_write_standard_response(conn, http_not_found); | ||||
| } | ||||
|  |  | |||
|  | @ -0,0 +1,23 @@ | |||
| #include "http.h" | ||||
| 
 | ||||
| void http_write_standard_response(event_loop_conn *conn, | ||||
|                                   http_response_type type) { | ||||
|   const char *s; | ||||
|   size_t len; | ||||
| 
 | ||||
|   switch (type) { | ||||
|   case 404: | ||||
|     s = http_404; | ||||
|     len = http_404_len; | ||||
|     break; | ||||
|   case 405: | ||||
|     s = http_405; | ||||
|     len = http_405_len; | ||||
|   } | ||||
| 
 | ||||
|   memcpy(conn->wbuf, s, len); | ||||
| 
 | ||||
|   conn->state = event_loop_conn_state_res; | ||||
|   conn->wbuf_size = len; | ||||
|   conn->wbuf_sent = 0; | ||||
| } | ||||
		Loading…
	
		Reference in New Issue