mirror of
https://github.com/dart-lang/sdk
synced 2024-09-23 06:23:31 +00:00
Remove the RequestHandler interface from the HTTP library
Having the RequestHandler interface did no add anything, so it has been removed. The HTTP server function addRequestHandler and setter defaultRequestHandler now just takes function. To use an instance of a class with a request handler member function the Dart auto closurerization works fine. R=ajohnsen@google.com, ager@google.com BUG=none TEST=tests/standalone/src/io/HttpServerHandlerTest.dart Review URL: https://chromiumcodereview.appspot.com//10226002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@6939 260f80e4-7a28-3924-810f-c04153c831b5
This commit is contained in:
parent
df055abd27
commit
11b6d128f1
|
@ -52,15 +52,6 @@ interface HttpStatus {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Interface to implement by HTTP request handler classes.
|
||||
*/
|
||||
|
||||
interface RequestHandler {
|
||||
void onRequest(HttpRequest request, HttpResponse response);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* HTTP server.
|
||||
*/
|
||||
|
@ -89,18 +80,20 @@ interface HttpServer default _HttpServer {
|
|||
* function [matcher] is called with the request and must return
|
||||
* [:true:] if the [handler] should handle the request. The first
|
||||
* handler for which [matcher] returns [:true:] will be handed the
|
||||
* request. The [handler] can be either an object implementing the
|
||||
* [RequestHandler] interface or a function taking two arguments.
|
||||
* request.
|
||||
*/
|
||||
addRequestHandler(bool matcher(HttpRequest request), Object handler);
|
||||
addRequestHandler(bool matcher(HttpRequest request),
|
||||
void handler(HttpRequest request, HttpResponse response));
|
||||
|
||||
/**
|
||||
* Sets the request handler. This request handler will be called if
|
||||
* none of the request handlers registered by [addRequestHandler]
|
||||
* matches the current request. If no default request handler is set
|
||||
* the server will just respond with status code [:NOT_FOUND:] (404).
|
||||
* Sets the default request handler. This request handler will be
|
||||
* called if none of the request handlers registered by
|
||||
* [addRequestHandler] matches the current request. If no default
|
||||
* request handler is set the server will just respond with status
|
||||
* code [:NOT_FOUND:] (404).
|
||||
*/
|
||||
void set defaultRequestHandler(Object handler);
|
||||
void set defaultRequestHandler(
|
||||
void handler(HttpRequest request, HttpResponse response));
|
||||
|
||||
/**
|
||||
* Stop server listening.
|
||||
|
|
|
@ -822,16 +822,8 @@ class _HttpConnection extends _HttpConnectionBase {
|
|||
|
||||
|
||||
class _RequestHandlerRegistration {
|
||||
_RequestHandlerRegistration(Function this._matcher, Object this._handler);
|
||||
_RequestHandlerRegistration(Function this._matcher, Function this._handler);
|
||||
Function _matcher;
|
||||
RequestHandler _handler;
|
||||
}
|
||||
|
||||
|
||||
class _RequestHandlerImpl implements RequestHandler {
|
||||
_RequestHandlerImpl(Function this._handler);
|
||||
void onRequest(HttpRequest request, HttpResponse response) =>
|
||||
_handler(request, response);
|
||||
Function _handler;
|
||||
}
|
||||
|
||||
|
@ -866,14 +858,13 @@ class _HttpServer implements HttpServer {
|
|||
_closeServer = false;
|
||||
}
|
||||
|
||||
addRequestHandler(bool matcher(String path), Object handler) {
|
||||
if (handler is Function) {
|
||||
handler = new _RequestHandlerImpl(handler);
|
||||
}
|
||||
addRequestHandler(bool matcher(String path),
|
||||
void handler(HttpRequest request, HttpResponse response)) {
|
||||
_handlers.add(new _RequestHandlerRegistration(matcher, handler));
|
||||
}
|
||||
|
||||
void set defaultRequestHandler(Object handler) {
|
||||
void set defaultRequestHandler(
|
||||
void handler(HttpRequest request, HttpResponse response)) {
|
||||
_defaultHandler = handler;
|
||||
}
|
||||
|
||||
|
@ -902,9 +893,9 @@ class _HttpServer implements HttpServer {
|
|||
void _handleRequest(HttpRequest request, HttpResponse response) {
|
||||
for (int i = 0; i < _handlers.length; i++) {
|
||||
if (_handlers[i]._matcher(request)) {
|
||||
var handler = _handlers[i]._handler;
|
||||
Function handler = _handlers[i]._handler;
|
||||
try {
|
||||
handler.onRequest(request, response);
|
||||
handler(request, response);
|
||||
} catch (var e) {
|
||||
if (_onError != null) {
|
||||
_onError(e);
|
||||
|
@ -915,11 +906,7 @@ class _HttpServer implements HttpServer {
|
|||
}
|
||||
|
||||
if (_defaultHandler != null) {
|
||||
if (_defaultHandler is Function) {
|
||||
_defaultHandler(request, response);
|
||||
} else {
|
||||
_defaultHandler.onRequest(request, response);
|
||||
}
|
||||
_defaultHandler(request, response);
|
||||
} else {
|
||||
response.statusCode = HttpStatus.NOT_FOUND;
|
||||
response.outputStream.close();
|
||||
|
|
|
@ -6,21 +6,21 @@
|
|||
#import("dart:io");
|
||||
#import("dart:isolate");
|
||||
|
||||
class Handler1 implements RequestHandler {
|
||||
class Handler1 {
|
||||
void onRequest(HttpRequest request, HttpResponse response) {
|
||||
response.outputStream.writeString("Handler 1");
|
||||
response.outputStream.close();
|
||||
}
|
||||
}
|
||||
|
||||
class Handler2 implements RequestHandler {
|
||||
class Handler2 {
|
||||
void onRequest(HttpRequest request, HttpResponse response) {
|
||||
response.outputStream.writeString("Handler 2");
|
||||
response.outputStream.close();
|
||||
}
|
||||
}
|
||||
|
||||
class French404Handler implements RequestHandler {
|
||||
class French404Handler {
|
||||
void onRequest(HttpRequest request, HttpResponse response) {
|
||||
response.statusCode = HttpStatus.NOT_FOUND;
|
||||
response.reasonPhrase = "Non Trouvé";
|
||||
|
@ -39,11 +39,19 @@ class Server {
|
|||
}
|
||||
|
||||
void addHandler(Function matcher, handler) {
|
||||
server.addRequestHandler(matcher, handler);
|
||||
if (handler is Function) {
|
||||
server.addRequestHandler(matcher, handler);
|
||||
} else {
|
||||
server.addRequestHandler(matcher, handler.onRequest);
|
||||
}
|
||||
}
|
||||
|
||||
void set defaultHandler(handler) {
|
||||
server.defaultRequestHandler = handler;
|
||||
if (handler is Function) {
|
||||
server.defaultRequestHandler = handler;
|
||||
} else {
|
||||
server.defaultRequestHandler = handler.onRequest;
|
||||
}
|
||||
}
|
||||
|
||||
void close() {
|
||||
|
|
Loading…
Reference in a new issue