Skip to content

Commit dae8293

Browse files
committed
Update allows method to take Request instead of String, change MethodResponder so it doesnt implement Responder anymore
1 parent 1bfb3ee commit dae8293

14 files changed

+42
-84
lines changed

src/main/java/httpserver/responder/DeleteResponder.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import httpserver.request.Request;
66
import httpserver.file.FileOperator;
77
import httpserver.file.PathExaminer;
8-
import httpserver.response.MethodNotAllowedResponse;
98
import httpserver.response.NotFoundResponse;
109
import httpserver.response.OkResponse;
1110
import httpserver.response.Response;
@@ -25,10 +24,6 @@ public DeleteResponder(PathExaminer pathExaminer, FileOperator fileOperator) {
2524

2625
@Override
2726
public Response respond(AppConfig appConfig, Request request) throws IOException {
28-
if (!allows(request.getPathString())) {
29-
return new MethodNotAllowedResponse();
30-
}
31-
3227
Path fullPath = pathExaminer.getFullPath(appConfig.getRoot(), request.getPathString());
3328
if (pathExaminer.pathExists(fullPath)) {
3429
fileOperator.deleteFileAtPath(fullPath);
@@ -38,7 +33,7 @@ public Response respond(AppConfig appConfig, Request request) throws IOException
3833
return new NotFoundResponse();
3934
}
4035

41-
public boolean allows(String pathString) {
42-
return pathString.equals("/form");
36+
public boolean allows(Request request) {
37+
return request.getPathString().equals("/form");
4338
}
4439
}

src/main/java/httpserver/responder/GetResponder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ private Response responseForFile(Path path, Request request) {
8888
return response;
8989
}
9090

91-
public boolean allows(String s) {
91+
public boolean allows(Request request) {
9292
return true;
9393
}
9494
}

src/main/java/httpserver/responder/InvalidMethodResponder.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ public Response respond(AppConfig appConfig, Request request) {
1212
}
1313

1414
@Override
15+
public boolean allows(Request request) {
16+
return true;
17+
}
18+
1519
public boolean allows(String pathString) {
1620
return true;
1721
}

src/main/java/httpserver/responder/MethodResponder.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package httpserver.responder;
22

3+
import httpserver.AppConfig;
34
import httpserver.Method;
45
import httpserver.request.Request;
6+
import httpserver.response.Response;
57

6-
public abstract class MethodResponder implements Responder {
8+
import java.io.IOException;
9+
10+
public abstract class MethodResponder {
711
protected Method method;
812

913
public Method getMethod() {
@@ -13,4 +17,8 @@ public Method getMethod() {
1317
public boolean handles(Request request) {
1418
return request.getMethod().equals(method);
1519
}
20+
21+
abstract boolean allows(Request request);
22+
23+
abstract Response respond(AppConfig appConfig, Request request) throws IOException;
1624
}

src/main/java/httpserver/responder/OptionsResponder.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public Response respond(AppConfig appConfig, Request request) {
2525
StringJoiner joiner = new StringJoiner(",");
2626

2727
for (MethodResponder methodResponder: methodResponders) {
28-
if (methodResponder.allows(request.getPathString())) {
28+
if (methodResponder.allows(request)) {
2929
joiner.add(methodResponder.getMethod().toString());
3030
}
3131
}
@@ -35,8 +35,7 @@ public Response respond(AppConfig appConfig, Request request) {
3535
return response;
3636
}
3737

38-
@Override
39-
public boolean allows(String pathString) {
38+
public boolean allows(Request request) {
4039
return true;
4140
}
4241
}

src/main/java/httpserver/responder/PatchResponder.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@ public PatchResponder(PathExaminer pathExaminer,
2626

2727
@Override
2828
public Response respond(AppConfig appConfig, Request request) throws IOException {
29-
if (!allows(request.getPathString())) {
30-
return new MethodNotAllowedResponse();
31-
}
32-
3329
Path fullPath = pathExaminer.getFullPath(appConfig.getRoot(), request.getPathString());
3430

3531
if (!pathExaminer.pathExists(fullPath)) {
@@ -59,7 +55,7 @@ private boolean matchingHash(Path fullPath, Request request) {
5955
return hasher.matches(fileContents, ifMatchHash);
6056
}
6157

62-
public boolean allows(String pathString) {
63-
return pathString.equals("/patch-content.txt");
58+
public boolean allows(Request request) {
59+
return request.getPathString().equals("/patch-content.txt");
6460
}
6561
}

src/main/java/httpserver/responder/PostResponder.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import httpserver.file.FileOperator;
55
import httpserver.file.PathExaminer;
66
import httpserver.request.Request;
7-
import httpserver.response.MethodNotAllowedResponse;
87
import httpserver.response.OkResponse;
98
import httpserver.response.Response;
109

@@ -23,10 +22,6 @@ public PostResponder(PathExaminer pathExaminer, FileOperator fileOperator) {
2322

2423
@Override
2524
public Response respond(AppConfig appConfig, Request request) throws IOException {
26-
if (!allows(request.getPathString())) {
27-
return new MethodNotAllowedResponse();
28-
}
29-
3025
Path fullPath = pathExaminer.getFullPath(appConfig.getRoot(), request.getPathString());
3126

3227
if (!pathExaminer.pathExists(fullPath)) {
@@ -37,7 +32,8 @@ public Response respond(AppConfig appConfig, Request request) throws IOException
3732
return new OkResponse(fileOperator.readContents(fullPath));
3833
}
3934

40-
public boolean allows(String pathString) {
35+
public boolean allows(Request request) {
36+
String pathString = request.getPathString();
4137
return pathString.equals("/form") || pathString.equals("/method_options");
4238
}
4339
}

src/main/java/httpserver/responder/PutResponder.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import httpserver.request.Request;
66
import httpserver.file.FileOperator;
77
import httpserver.file.PathExaminer;
8-
import httpserver.response.MethodNotAllowedResponse;
98
import httpserver.response.NotFoundResponse;
109
import httpserver.response.OkResponse;
1110
import httpserver.response.Response;
@@ -18,17 +17,13 @@ public class PutResponder extends MethodResponder {
1817
private final FileOperator fileOperator;
1918

2019
public PutResponder(PathExaminer pathExaminer, FileOperator fileOperator) {
21-
super.method= Method.PUT;
20+
super.method = Method.PUT;
2221
this.pathExaminer = pathExaminer;
2322
this.fileOperator = fileOperator;
2423
}
2524

2625
@Override
2726
public Response respond(AppConfig appConfig, Request request) throws IOException {
28-
if (!allows(request.getPathString())) {
29-
return new MethodNotAllowedResponse();
30-
}
31-
3227
Path fullPath = pathExaminer.getFullPath(appConfig.getRoot(), request.getPathString());
3328

3429
if (!pathExaminer.pathExists(fullPath)) {
@@ -39,7 +34,8 @@ public Response respond(AppConfig appConfig, Request request) throws IOException
3934
return new OkResponse(fileOperator.readContents(fullPath));
4035
}
4136

42-
public boolean allows(String pathString) {
37+
public boolean allows(Request request) {
38+
String pathString = request.getPathString();
4339
return pathString.equals("/form") || pathString.equals("/method_options");
4440
}
4541
}

src/test/java/httpserver/responder/DeleteResponderTest.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,19 +57,10 @@ public void returns404WhenAllowedButDoesntExist() throws Exception {
5757
assertEquals(404, response.getStatusCode());
5858
}
5959

60-
@Test
61-
public void returns405WhenNotAllowed() throws Exception {
62-
Request request = new Request(Method.DELETE, "/not_allowed", new Header[0], "");
63-
64-
Response response = deleteResponder.respond(appConfigMock, request);
65-
66-
assertEquals(405, response.getStatusCode());
67-
}
68-
6960
@Test
7061
public void allowsForm() throws Exception {
71-
assertTrue(deleteResponder.allows("/form"));
72-
assertFalse(deleteResponder.allows("/other"));
62+
assertTrue(deleteResponder.allows(new Request(null, "/form", null, null)));
63+
assertFalse(deleteResponder.allows(new Request(null, "/other", null, null)));
7364
}
7465

7566
@Test

src/test/java/httpserver/responder/GetResponderTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ public void getsDirContentsForPath() throws Exception {
139139

140140
@Test
141141
public void allowsForm() throws Exception {
142-
assertTrue(getResponder.allows("/form"));
143-
assertTrue(getResponder.allows("anything"));
142+
assertTrue(getResponder.allows(new Request(null, "/form", null, null)));
143+
assertTrue(getResponder.allows(new Request(null, "anything", null, null)));
144144
}
145145

146146
@Test

0 commit comments

Comments
 (0)