11package handler ;
22
33import http .request .HttpMethod ;
4- import http .request .RequestHeaders ;
4+ import http .request .HttpRequest ;
55import http .request .RequestLine ;
6+ import http .request .RequestMessageBody ;
67import http .request .RequestURI ;
7- import java .io .BufferedReader ;
88import java .io .DataOutputStream ;
99import java .io .File ;
1010import java .io .IOException ;
1111import java .io .InputStream ;
12- import java .io .InputStreamReader ;
1312import java .io .OutputStream ;
1413import java .net .Socket ;
15- import java .net .URLDecoder ;
16- import java .nio .charset .StandardCharsets ;
1714import java .nio .file .Files ;
1815import java .util .Map ;
1916import model .User ;
2017import org .slf4j .Logger ;
2118import org .slf4j .LoggerFactory ;
2219import util .HttpRequestUtils ;
23- import util .HttpRequestUtils .Pair ;
24- import util .IOUtils ;
2520
2621public class RequestHandler extends Thread {
2722 private static final Logger log = LoggerFactory .getLogger (RequestHandler .class );
@@ -37,16 +32,9 @@ public void run() {
3732 connection .getPort ());
3833
3934 try (InputStream in = connection .getInputStream (); OutputStream out = connection .getOutputStream ()) {
40-
41- InputStreamReader inputStreamReader = new InputStreamReader (in , StandardCharsets .UTF_8 ); // 왜 안먹힐까?
42- BufferedReader bufferedReader = new BufferedReader (inputStreamReader );
43-
44- String line = URLDecoder .decode (bufferedReader .readLine (), StandardCharsets .UTF_8 ); // 왜 한 번 더 해줘야 먹힐까? - 위에서 안먹히는 걸까?
45- log .info ("RequestLine = {}" , line );
46- if (line == null ) {
47- return ;
48- }
49- RequestLine requestLine = HttpRequestUtils .parseRequestLine (line );
35+ HttpRequest httpRequest = HttpRequest .from (in );
36+ RequestLine requestLine = httpRequest .getRequestLine ();
37+ log .info ("RequestLine= {}" , requestLine );
5038 RequestURI requestUri = requestLine .getRequestUri ();
5139 String url = requestUri .getPath ();
5240
@@ -78,25 +66,10 @@ public void run() {
7866 responseBody (dos , body );
7967 }
8068
81-
82- // HTTP Headers
83- RequestHeaders requestHeaders = new RequestHeaders ();
84- while (!line .equals (("" ))) {
85- line = URLDecoder .decode (bufferedReader .readLine (), StandardCharsets .UTF_8 );
86- log .debug ("Header = {}" , line );
87-
88- Pair pair = HttpRequestUtils .parseHeader (line );
89- requestHeaders .addHeader (pair );
90- }
91-
92- // HTTP Message Body (Content-Length 만큼 받아야 함)
9369 if (requestLine .getHttpMethod ().equals (HttpMethod .POST )) {
94- int contentLength = Integer .parseInt (requestHeaders .getHeader ("Content-Length" ));
95- String messageBody = URLDecoder .decode (
96- IOUtils .readData (bufferedReader , contentLength ),
97- StandardCharsets .UTF_8
98- );
99- log .debug ("HTTP Message Body = {}" , messageBody );
70+ RequestMessageBody requestMessageBody = httpRequest .getRequestMessageBody ();
71+ String messageBody = requestMessageBody .getMessageBody ();
72+ log .debug ("HTTP Message Body = {}" , messageBody );
10073
10174 Map <String , String > parsedMessageBody = HttpRequestUtils .parseQueryString (messageBody );
10275 if (url .equals ("/user/create" )) {
0 commit comments