Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(127)

Unified Diff: samples/chat/chat_server_lib.dart

Issue 10119005: Add HTTP handler registration to the HTTP server (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: samples/chat/chat_server_lib.dart
diff --git a/samples/chat/chat_server_lib.dart b/samples/chat/chat_server_lib.dart
index f88a68850323a7a7891ca3b33d34e4331cc65627..f80cca0aaf12555439f2d8187be087f039ab3eed 100644
--- a/samples/chat/chat_server_lib.dart
+++ b/samples/chat/chat_server_lib.dart
@@ -7,35 +7,7 @@
#import("dart:isolate");
#import("dart:json");
-typedef void RequestHandler(HttpRequest request, HttpResponse response);
-
class ChatServer extends IsolatedServer {
- ChatServer() : super() {
- addHandler("/",
- (HttpRequest request, HttpResponse response) =>
- redirectPageHandler(
- request, response, "dart_client/index.html"));
- addHandler("/js_client/index.html",
- (HttpRequest request, HttpResponse response) =>
- fileHandler(request, response));
- addHandler("/js_client/code.js",
- (HttpRequest request, HttpResponse response) =>
- fileHandler(request, response));
- addHandler("/dart_client/index.html",
- (HttpRequest request, HttpResponse response) =>
- fileHandler(request, response));
- addHandler("/out/dart_client/chat.dart.app.js",
- (HttpRequest request, HttpResponse response) =>
- fileHandler(request, response));
- addHandler("/favicon.ico",
- (HttpRequest request, HttpResponse response) =>
- fileHandler(request, response, "static/favicon.ico"));
-
- addHandler("/join", _joinHandler);
- addHandler("/leave", _leaveHandler);
- addHandler("/message", _messageHandler);
- addHandler("/receive", _receiveHandler);
- }
}
class ServerMain {
@@ -335,10 +307,6 @@ class IsolatedServer extends Isolate {
response.outputStream.close();
}
- IsolatedServer() : super() {
- _requestHandlers = new Map();
- }
-
void redirectPageHandler(HttpRequest request,
HttpResponse response,
String redirectPath) {
@@ -552,11 +520,6 @@ class IsolatedServer extends Isolate {
};
}
- void addHandler(String path,
- void handler(HttpRequest request, HttpResponse response)) {
- _requestHandlers[path] = handler;
- }
-
void main() {
_logRequests = false;
_topic = new Topic();
@@ -585,10 +548,39 @@ class IsolatedServer extends Isolate {
_logging = message.logging;
replyTo.send(new ChatServerStatus.starting(), null);
_server = new HttpServer();
+ _server.defaultRequestHandler = _notFoundHandler;
+ _server.addRequestHandler(
+ new RegExp("^/\$"),
+ (HttpRequest request, HttpResponse response) =>
+ redirectPageHandler(
+ request, response, "dart_client/index.html"));
+ _server.addRequestHandler(
+ new RegExp("^/js_client/index.html\$"),
+ (HttpRequest request, HttpResponse response) =>
+ fileHandler(request, response));
+ _server.addRequestHandler(
+ new RegExp("^/js_client/code.js\$"),
+ (HttpRequest request, HttpResponse response) =>
+ fileHandler(request, response));
+ _server.addRequestHandler(
+ new RegExp("^/dart_client/index.html\$"),
+ (HttpRequest request, HttpResponse response) =>
+ fileHandler(request, response));
+ _server.addRequestHandler(
+ new RegExp("^/out/dart_client/chat.dart.app.js\$"),
+ (HttpRequest request, HttpResponse response) =>
+ fileHandler(request, response));
+ _server.addRequestHandler(
+ new RegExp("^/favicon.ico\$"),
+ (HttpRequest request, HttpResponse response) =>
+ fileHandler(request, response, "static/favicon.ico"));
+
+ _server.addRequestHandler(new RegExp("^/join\$"), _joinHandler);
+ _server.addRequestHandler(new RegExp("^/leave\$"), _leaveHandler);
+ _server.addRequestHandler(new RegExp("^/message\$"), _messageHandler);
+ _server.addRequestHandler(new RegExp("^/receive\$"), _receiveHandler);
try {
_server.listen(_host, _port, backlog: message.backlog);
- _server.onRequest = (HttpRequest req, HttpResponse rsp) =>
- _requestReceivedHandler(req, rsp);
replyTo.send(new ChatServerStatus.started(_server.port), null);
_loggingTimer = new Timer.repeating(1000, _handleLogging);
} catch (var e) {
@@ -608,33 +600,9 @@ class IsolatedServer extends Isolate {
this.port.close();
}
- void _requestReceivedHandler(HttpRequest request, HttpResponse response) {
- if (_logRequests) {
- String method = request.method;
- String uri = request.uri;
- print("Request: $method $uri");
- print("Request headers:");
- request.headers.forEach(
- (String name, String value) => print("$name: $value"));
- print("Request parameters:");
- request.queryParameters.forEach(
- (String name, String value) => print("$name = $value"));
- print("");
- }
-
- var requestHandler =_requestHandlers[request.path];
- if (requestHandler != null) {
- requestHandler(request, response);
- } else {
- print('No request handler found for ${request.path}');
- _notFoundHandler(request, response);
- }
- }
-
String _host;
int _port;
HttpServer _server; // HTTP server instance.
- Map _requestHandlers;
bool _logRequests;
Topic _topic;

Powered by Google App Engine
This is Rietveld 408576698