OLD | NEW |
---|---|
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library shelf.middleware; | 5 library shelf.middleware; |
6 | 6 |
7 import 'request.dart'; | 7 import 'request.dart'; |
8 import 'response.dart'; | 8 import 'response.dart'; |
9 import 'handler.dart'; | 9 import 'handler.dart'; |
10 import 'hijack_exception.dart'; | 10 import 'hijack_exception.dart'; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
47 /// does not receive errors thrown by [requestHandler] or [responseHandler], nor | 47 /// does not receive errors thrown by [requestHandler] or [responseHandler], nor |
48 /// does it receive [HijackException]s. It can either return a new response or | 48 /// does it receive [HijackException]s. It can either return a new response or |
49 /// throw an error. | 49 /// throw an error. |
50 Middleware createMiddleware({requestHandler(Request request), | 50 Middleware createMiddleware({requestHandler(Request request), |
51 responseHandler(Response response), | 51 responseHandler(Response response), |
52 errorHandler(error, StackTrace stackTrace)}) { | 52 errorHandler(error, StackTrace stackTrace)}) { |
53 if (requestHandler == null) requestHandler = (request) => null; | 53 if (requestHandler == null) requestHandler = (request) => null; |
54 | 54 |
55 if (responseHandler == null) responseHandler = (response) => response; | 55 if (responseHandler == null) responseHandler = (response) => response; |
56 | 56 |
57 if (errorHandler == null) errorHandler = (error, stackTrace) => throw error; | |
nweiz
2014/10/14 21:21:18
Remove this; it's redundant with the [onError] stu
kevmoo
2014/10/14 22:07:05
Done.
| |
58 | |
59 var onError = null; | |
60 if (errorHandler != null) { | |
61 onError = (error, stackTrace) { | |
62 if (error is HijackException) throw error; | |
63 return errorHandler(error, stackTrace); | |
64 }; | |
65 } | |
66 | |
57 return (Handler innerHandler) { | 67 return (Handler innerHandler) { |
58 return (request) { | 68 return (request) { |
59 return syncFuture(() => requestHandler(request)).then((response) { | 69 return syncFuture(() => requestHandler(request)).then((response) { |
60 if (response != null) return response; | 70 if (response != null) return response; |
61 | 71 |
62 return syncFuture(() => innerHandler(request)) | 72 return syncFuture(() => innerHandler(request)) |
63 .then((response) => responseHandler(response), | 73 .then((response) => responseHandler(response), onError: onError); |
64 onError: (error, stackTrace) { | |
65 if (error is HijackException) throw error; | |
66 return errorHandler(error, stackTrace); | |
67 }); | |
68 }); | 74 }); |
69 }; | 75 }; |
70 }; | 76 }; |
71 } | 77 } |
OLD | NEW |