Skip to content

Commit 6cff09b

Browse files
committed
E11-T2
1 parent 6df80e7 commit 6cff09b

File tree

6 files changed

+91
-67
lines changed

6 files changed

+91
-67
lines changed

src/cleancoderscom/http/Controller.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,12 @@
22

33

44
public interface Controller {
5-
public String handle(ParsedRequest request);
6-
}
5+
String handle(ParsedRequest request);
6+
7+
static String makeResponse(String content) {
8+
return "HTTP/1.1 200 OK\n" +
9+
"Content-Length: " + content.length() + "\n" +
10+
"\n" +
11+
content;
12+
}
13+
}

src/cleancoderscom/http/Router.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,13 @@ public void addPath(String path, Controller controller) {
1111
}
1212

1313
public String route(ParsedRequest request) {
14-
System.out.println("request.path = " + request.path);
1514
String[] parts = request.path.split("/");
16-
String controllerKey = parts.length > 1 ? parts[1] : "";
15+
String controllerKey = parts.length > 1 ? parts[1] : "";
1716
Controller controller = routes.get(controllerKey);
18-
return controller == null ? null : controller.handle(request);
17+
if(controller == null) {
18+
return "HTTP/1.1 404 OK\n";
19+
} else {
20+
return controller.handle(request);
21+
}
1922
}
2023
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package cleancoderscom.usecases.codecastSummaries;
2+
3+
import cleancoderscom.Context;
4+
import cleancoderscom.entities.User;
5+
import cleancoderscom.http.Controller;
6+
import cleancoderscom.http.ParsedRequest;
7+
import cleancoderscom.view.ViewTemplate;
8+
9+
import java.io.IOException;
10+
import java.util.List;
11+
12+
public class CodecastSummariesController implements Controller {
13+
public String handle(ParsedRequest request) {
14+
return Controller.makeResponse(getFrontPage());
15+
}
16+
17+
static String getFrontPage() {
18+
// TODO - This belongs in the Controller
19+
CodecastSummariesUseCase useCase = new CodecastSummariesUseCase();
20+
User bob = Context.userGateway.findUserByName("Bob");
21+
List<PresentableCodecastSummary> presentableCodecasts = useCase.presentCodecasts(bob);
22+
23+
try {
24+
// TODO - This is the View
25+
ViewTemplate frontPageTemplate = ViewTemplate.create("html/frontpage.html");
26+
27+
StringBuilder codecastLines = new StringBuilder();
28+
for(PresentableCodecastSummary presentableCodecast : presentableCodecasts) {
29+
30+
ViewTemplate codecastTemplate = ViewTemplate.create("html/codecast.html");
31+
codecastTemplate.replace("title", presentableCodecast.title);
32+
codecastTemplate.replace("publicationDate", presentableCodecast.publicationDate);
33+
codecastTemplate.replace("permalink", presentableCodecast.permalink);
34+
35+
//staged
36+
codecastTemplate.replace("thumbnail", "https://d26o5k45lnmm4v.cloudfront.net/YmluYXJ5OjIxNzA1Nw");
37+
codecastTemplate.replace("author", "Uncle Bob");
38+
codecastTemplate.replace("duration", "58 min.");
39+
codecastTemplate.replace("contentActions", "Buying options go here.");
40+
41+
codecastLines.append(codecastTemplate.getContent());
42+
}
43+
44+
frontPageTemplate.replace("codecasts", codecastLines.toString());
45+
return frontPageTemplate.getContent();
46+
} catch(IOException e) {
47+
e.printStackTrace();
48+
return "Gunk";
49+
}
50+
}
51+
}

test/cleancoderscom/http/RouterTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,12 @@ public String handle(ParsedRequest request) {
5151
return "";
5252
}
5353
}
54+
55+
@Test
56+
public void Four04() throws Exception
57+
{
58+
String result = router.route(new ParsedRequest("GET", "/something-missing"));
59+
60+
assertEquals("HTTP/1.1 404 OK\n", result);
61+
}
5462
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package cleancoderscom.usecases.codecastSummaries;
2+
3+
import org.junit.Test;
4+
5+
public class CodecastSummariesControllerTest {
6+
7+
@Test
8+
public void testFrontPage() throws Exception
9+
{
10+
// List<>
11+
}
12+
13+
}
Lines changed: 4 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,15 @@
11
package cleancoderscom.utilities;
22

3-
import cleancoderscom.Context;
4-
import cleancoderscom.http.Controller;
53
import cleancoderscom.http.ParsedRequest;
64
import cleancoderscom.http.RequestParser;
75
import cleancoderscom.http.Router;
8-
import cleancoderscom.usecases.codecastSummaries.CodecastSummariesUseCase;
9-
import cleancoderscom.usecases.codecastSummaries.PresentableCodecastSummary;
10-
import cleancoderscom.entities.User;
6+
import cleancoderscom.usecases.codecastSummaries.CodecastSummariesController;
117
import cleancoderscom.socketserver.SocketServer;
128
import cleancoderscom.TestSetup;
13-
import cleancoderscom.view.ViewTemplate;
149

1510
import java.io.BufferedReader;
1611
import java.io.IOException;
1712
import java.io.InputStreamReader;
18-
import java.util.List;
1913

2014

2115
public class Main {
@@ -33,11 +27,9 @@ public static void main(String[] args) throws Exception {
3327
BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
3428
ParsedRequest request = new RequestParser().parse(reader.readLine());
3529
String response = router.route(request);
36-
if (response != null)
37-
s.getOutputStream().write(response.getBytes());
38-
else
39-
// TODO - Router should take care of 404
40-
s.getOutputStream().write("HTTP/1.1 404 OK\n".getBytes());
30+
31+
s.getOutputStream().write(response.getBytes());
32+
4133
s.close();
4234
} catch(IOException e) {
4335
e.printStackTrace();
@@ -46,55 +38,5 @@ public static void main(String[] args) throws Exception {
4638
server.start();
4739
}
4840

49-
static class CodecastSummariesController implements Controller {
50-
public String handle(ParsedRequest request) {
51-
String frontPage = getFrontPage();
52-
return makeResponse(frontPage);
53-
}
54-
}
55-
56-
private static String makeResponse(String content) {
57-
return "HTTP/1.1 200 OK\n" +
58-
"Content-Length: " + content.length() + "\n" +
59-
60-
"\n" +
61-
content;
62-
}
63-
64-
public static String getFrontPage() {
65-
66-
// TODO - This belongs in the Controller
67-
CodecastSummariesUseCase useCase = new CodecastSummariesUseCase();
68-
User bob = Context.userGateway.findUserByName("Bob");
69-
List<PresentableCodecastSummary> presentableCodecasts = useCase.presentCodecasts(bob);
70-
71-
try {
72-
// TODO - This is the View
73-
ViewTemplate frontPageTemplate = ViewTemplate.create("html/frontpage.html");
74-
75-
StringBuilder codecastLines = new StringBuilder();
76-
for(PresentableCodecastSummary presentableCodecast : presentableCodecasts) {
77-
78-
ViewTemplate codecastTemplate = ViewTemplate.create("html/codecast.html");
79-
codecastTemplate.replace("title", presentableCodecast.title);
80-
codecastTemplate.replace("publicationDate", presentableCodecast.publicationDate);
81-
codecastTemplate.replace("permalink", presentableCodecast.permalink);
82-
83-
//staged
84-
codecastTemplate.replace("thumbnail", "https://d26o5k45lnmm4v.cloudfront.net/YmluYXJ5OjIxNzA1Nw");
85-
codecastTemplate.replace("author", "Uncle Bob");
86-
codecastTemplate.replace("duration", "58 min.");
87-
codecastTemplate.replace("contentActions", "Buying options go here.");
88-
89-
codecastLines.append(codecastTemplate.getContent());
90-
}
91-
92-
frontPageTemplate.replace("codecasts", codecastLines.toString());
93-
return frontPageTemplate.getContent();
94-
} catch(IOException e) {
95-
e.printStackTrace();
96-
return "Gunk";
97-
}
98-
}
9941

10042
}

0 commit comments

Comments
 (0)