-
Notifications
You must be signed in to change notification settings - Fork 12
updated clientHandler for 501 response and httpParser #224
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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"); | ||
|
|
@@ -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 { | ||
|
|
@@ -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); | ||
|
Comment on lines
+85
to
+86
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should we really try to return root path that will be translated into index.html? Check Teapot.write418Response() for how to make a response in code without returning a file.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The problem with returning a file as a response is that it can include sensitive information. |
||
| } | ||
|
|
||
| private byte[][] getFileNotFoundResponse(FileNotFoundException e) throws IOException { | ||
| FileInfo fileInfo = fileRequestHandler.handleError(e.getParsedRequest(), e.getError404FileName(), e.getResponseCode()); | ||
| byte[][] response; | ||
|
|
@@ -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()); | ||
| } | ||
|
Comment on lines
+99
to
+105
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This method is never used and can be removed? |
||
| } | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Seems to be missing a getRequestMethod that is being called at ClientHandler.java Line 64
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I have added a getRequestMethod and it seems to be working now, thanks for the feedback! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since this code is added in the getResponse method it will not be used for requests handled before this point, i.e. isCoffeeRequest. But maybe it is the check for coffeerequest and return of 418 response that should be moved into the getresponse method instead to be a part of this check.