@@ -16,47 +16,57 @@ public RequestParser(AppConfig appConfig) {
1616 }
1717
1818 public Request parse (InputStream inputStream ) throws IOException {
19- BufferedReader bufferedReader = new BufferedReader ( new InputStreamReader (inputStream ));
19+ BufferedReader bufferedReader = new BufferedReader (new InputStreamReader (inputStream ));
2020
21- String firstLine = bufferedReader .readLine ();
22-
23- String [] parts = parseFirstLine (firstLine );
24- String method = parts [0 ];
25- String path = parts [1 ];
26- String queryString = parts [2 ];
21+ RequestLine requestLine = getRequestLine (bufferedReader );
2722
28- Header [] headers = parseHeaders (bufferedReader );
29- log (firstLine , headers );
23+ Header [] headers = getHeaders (bufferedReader );
3024
3125 String body = getBody (bufferedReader );
3226
33- return new Request (method , path , headers , queryString , body );
27+ return new Request (requestLine .getMethod (),
28+ requestLine .getPath (),
29+ headers ,
30+ requestLine .getQueryString (),
31+ body );
3432 }
3533
36- private String getBody (BufferedReader bufferedReader ) throws IOException {
37- String output = "" ;
38- int counter = 0 ;
39- while (counter < contentLength ) {
40- output = output + (char )bufferedReader .read ();
41- counter = counter + 1 ;
42- }
43- return output ;
34+ private RequestLine getRequestLine (BufferedReader bufferedReader ) throws IOException {
35+ String firstLine = bufferedReader .readLine ();
36+ logger .log (firstLine );
37+ return parseRequestLine (firstLine );
4438 }
4539
46- private void log (String firstLine , Header [] headers ) {
47- logger .log (firstLine );
48- for (Header header : headers ) {
49- logger .log (header .toString ());
40+ private class RequestLine {
41+ private final String method ;
42+ private final String path ;
43+ private final String queryString ;
44+
45+ private String getMethod () {
46+ return method ;
47+ }
48+
49+ private String getPath () {
50+ return path ;
51+ }
52+
53+ private String getQueryString () {
54+ return queryString ;
55+ }
56+
57+ private RequestLine (String method , String path , String queryString ) {
58+ this .method = method ;
59+ this .path = path ;
60+ this .queryString = queryString ;
5061 }
51- logger .log ("" );
5262 }
5363
54- private String [] parseFirstLine (String firstLine ) {
64+ private RequestLine parseRequestLine (String firstLine ) {
5565 String [] parts = firstLine .split (" " );
5666 String method = parts [0 ];
5767 String path = pathToParts (parts [1 ])[0 ];
5868 String queryString = pathToParts (parts [1 ])[1 ];
59- return new String []{ method , new UrlDecoder ().decode (path ), queryString } ;
69+ return new RequestLine ( method , new UrlDecoder ().decode (path ), queryString ) ;
6070 }
6171
6272 private String [] pathToParts (String pathString ) {
@@ -69,14 +79,16 @@ private String[] pathToParts(String pathString) {
6979 return pathParts ;
7080 }
7181
72- private Header [] parseHeaders (BufferedReader in ) throws IOException {
82+ private Header [] getHeaders (BufferedReader in ) throws IOException {
7383 List <Header > headers = new ArrayList <>();
7484 String inputLine ;
7585
7686 while (!(inputLine = in .readLine ()).equals ("" )) {
87+ logger .log (inputLine );
7788 Header header = parseHeader (inputLine );
7889 headers .add (header );
7990 }
91+ logger .log ("\r \n " );
8092
8193 return headers .toArray (new Header [0 ]);
8294 }
@@ -88,4 +100,14 @@ private Header parseHeader(String inputLine) {
88100 }
89101 return new Header (parts [0 ], parts [1 ]);
90102 }
103+
104+ private String getBody (BufferedReader bufferedReader ) throws IOException {
105+ StringBuilder stringBuilder = new StringBuilder ();
106+ int counter = 0 ;
107+ while (counter < contentLength ) {
108+ stringBuilder .append ((char )bufferedReader .read ());
109+ counter = counter + 1 ;
110+ }
111+ return stringBuilder .toString ();
112+ }
91113}
0 commit comments