forked from softeerbootcamp-7th/be-was
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHttpBufferedReaderRequestConverter.java
More file actions
44 lines (34 loc) · 1.53 KB
/
HttpBufferedReaderRequestConverter.java
File metadata and controls
44 lines (34 loc) · 1.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package webserver.http.request;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.net.Socket;
import java.util.Arrays;
public class HttpBufferedReaderRequestConverter implements HttpRequestConverter {
private static final Logger logger = LoggerFactory.getLogger(HttpBufferedReaderRequestConverter.class);
public HttpRequest parseRequest(Socket connection){
try {
InputStream in = connection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
BufferedReader bufferedReader = new BufferedReader(reader);
String firstLine = bufferedReader.readLine();
HttpRequest request = HttpRequest.from(firstLine);
while (bufferedReader.ready()) {
String line = bufferedReader.readLine().strip();
if(line.length() <= 1) break;
int idx = line.indexOf(':');
//TODO: idx == -1 일 경우 Throw Exception
request.setHeader(line.substring(0, idx).strip(), line.substring(idx+1).strip());
logger.debug("New Header Added:{} - {}", line.substring(0, idx), line.substring(idx));
}
//TODO: Body 파싱 추가
return request;
} catch (IOException e) {
logger.error(e.getMessage());
logger.error(Arrays.toString(e.getStackTrace()));
logger.error(String.valueOf(e.getClass()));
}
//TODO: throw webserver exception
return null;
}
}