Skip to content

Commit

Permalink
updated clientHandler for 501 response and httpParser
Browse files Browse the repository at this point in the history
  • Loading branch information
Charlottehenriksson committed Feb 16, 2024
1 parent 727e51a commit a6346c9
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
20 changes: 20 additions & 0 deletions src/main/java/org/fungover/storm/client/ClientHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.io.OutputStream;
import java.net.Socket;
import java.nio.file.Files;
import java.nio.file.Path;

public class ClientHandler implements Runnable {
private static final Logger LOGGER = LogManager.getLogger("CLIENT_HANDLER");
Expand Down Expand Up @@ -60,6 +61,11 @@ public void run() {
}

private byte[][] getResponse(String input) throws IOException {
String method = HttpParser.getRequestMethod(input);
if (!HttpParser.isMethodSupported(method)) {
return get501Response();
}

FileInfo fileInfo;
byte[][] response;
try {
Expand All @@ -73,6 +79,13 @@ private byte[][] getResponse(String input) throws IOException {
return response;
}

private byte[][] get501Response() {
ResponseCode responseCode = ResponseCode.NOT_IMPLEMENTED;
String description = responseCode.getCode();
FileInfo fileInfo = new FileInfo(Path.of("/"), description.getBytes());
return fileRequestHandler.writeResponse(fileInfo, description);
}

private byte[][] getFileNotFoundResponse(FileNotFoundException e) throws IOException {
FileInfo fileInfo = fileRequestHandler.handleError(e.getParsedRequest(), e.getError404FileName(), e.getResponseCode());
byte[][] response;
Expand All @@ -83,4 +96,11 @@ private byte[][] getFileNotFoundResponse(FileNotFoundException e) throws IOExcep
}
return response;
}

private void handleIOException(IOException e) {
if (e.getMessage().contains("500"))
LOGGER.error(ResponseCode.HTTP_RESPONSE_STATUS_CODES);
else
LOGGER.error(e.getMessage());
}
}
6 changes: 5 additions & 1 deletion src/main/java/org/fungover/storm/client/HttpParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

public class HttpParser {

private static final List<String> methods = List.of("GET", "POST", "PUT");
private static final List<String> methods = List.of("GET", "POST", "PUT", "HEAD");
private static final int REQUEST_LINE_PROPERTIES = 3;

private HttpParser() {
Expand All @@ -31,6 +31,10 @@ public static String getPath(String requestLine) {
}
}

public static boolean isMethodSupported(String method) {
return methods.contains(method);
}



private static Map<String, String> requestHeaders(List<String> lines, String[] firstLine) {
Expand Down

0 comments on commit a6346c9

Please sign in to comment.