From 8c48be9f9ff21fb7e4386145581928f9c0603cdd Mon Sep 17 00:00:00 2001 From: "thomashii@dukefirehawk.com" Date: Thu, 6 Oct 2022 08:00:03 +0800 Subject: [PATCH] Fixed issue 83 --- packages/framework/CHANGELOG.md | 4 ++++ .../framework/lib/src/http/http_request_context.dart | 4 ++-- packages/framework/pubspec.yaml | 2 +- packages/hot/CHANGELOG.md | 4 ++++ packages/hot/lib/angel3_hot.dart | 10 +++++----- packages/hot/pubspec.yaml | 2 +- packages/websocket/example/main.dart | 5 ++++- packages/websocket/lib/server.dart | 4 ++-- packages/websocket/pubspec.yaml | 4 ++-- packages/websocket/test/auth_test.dart | 2 ++ 10 files changed, 27 insertions(+), 14 deletions(-) diff --git a/packages/framework/CHANGELOG.md b/packages/framework/CHANGELOG.md index 5f6f56ce..1a98b120 100644 --- a/packages/framework/CHANGELOG.md +++ b/packages/framework/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 7.0.3 + +* Fixed issue #83. Allow Http request to return null headers instead of throwing an exception. + ## 7.0.2 * Added performance benchmark to README diff --git a/packages/framework/lib/src/http/http_request_context.dart b/packages/framework/lib/src/http/http_request_context.dart index 26797dc8..b390f0f2 100644 --- a/packages/framework/lib/src/http/http_request_context.dart +++ b/packages/framework/lib/src/http/http_request_context.dart @@ -28,8 +28,8 @@ class HttpRequestContext extends RequestContext { } @override - HttpHeaders get headers { - return rawRequest!.headers; + HttpHeaders? get headers { + return rawRequest?.headers; } @override diff --git a/packages/framework/pubspec.yaml b/packages/framework/pubspec.yaml index d00acf9d..83c971f1 100644 --- a/packages/framework/pubspec.yaml +++ b/packages/framework/pubspec.yaml @@ -1,5 +1,5 @@ name: angel3_framework -version: 7.0.2 +version: 7.0.3 description: A high-powered HTTP server extensible framework with dependency injection, routing and much more. homepage: https://angel3-framework.web.app/ repository: https://github.com/dukefirehawk/angel/tree/master/packages/framework diff --git a/packages/hot/CHANGELOG.md b/packages/hot/CHANGELOG.md index d5ced7cc..afcbb087 100644 --- a/packages/hot/CHANGELOG.md +++ b/packages/hot/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 7.0.1 + +* Updated `server` header to `angel3` + ## 7.0.0 * Require Dart >= 2.17 diff --git a/packages/hot/lib/angel3_hot.dart b/packages/hot/lib/angel3_hot.dart index 9e53fa70..76f4fcbb 100644 --- a/packages/hot/lib/angel3_hot.dart +++ b/packages/hot/lib/angel3_hot.dart @@ -93,7 +93,7 @@ class HotReloader { response.statusCode = HttpStatus.badGateway; response.headers ..contentType = ContentType.html - ..set(HttpHeaders.serverHeader, 'angel_hot'); + ..set(HttpHeaders.serverHeader, 'angel3'); if (request.headers .value(HttpHeaders.acceptEncodingHeader) @@ -163,11 +163,11 @@ class HotReloader { 'You have instantiated a HotReloader without providing any filesystem paths to watch.'); } - bool _sw(String s) { + bool sw(String s) { return Platform.executableArguments.any((ss) => ss.startsWith(s)); } - if (!_sw('--observe') && !_sw('--enable-vm-service')) { + if (!sw('--observe') && !sw('--enable-vm-service')) { _logWarning( 'You have instantiated a HotReloader without passing `--enable-vm-service` or `--observe` to the Dart VM. Hot reloading will be disabled.'); isHot = false; @@ -315,7 +315,7 @@ class HotReloader { } Future _listenToStat(String path) async { - Future _listen() async { + Future listen() async { try { var stat = await FileStat.stat(path); if (stat.type == FileSystemEntityType.link) { @@ -345,7 +345,7 @@ class HotReloader { } } - var r = await _listen(); + var r = await listen(); if (r == null) { _logWarning( diff --git a/packages/hot/pubspec.yaml b/packages/hot/pubspec.yaml index debad34b..e313c729 100644 --- a/packages/hot/pubspec.yaml +++ b/packages/hot/pubspec.yaml @@ -1,5 +1,5 @@ name: angel3_hot -version: 7.0.0 +version: 7.0.1 description: Supports hot reloading/hot code push of Angel3 servers on file changes. homepage: https://angel3-framework.web.app/ repository: https://github.com/dukefirehawk/angel/tree/master/packages/hot diff --git a/packages/websocket/example/main.dart b/packages/websocket/example/main.dart index a3b3f721..3049d218 100644 --- a/packages/websocket/example/main.dart +++ b/packages/websocket/example/main.dart @@ -11,7 +11,7 @@ void main(List args) async { var http = AngelHttp(app); var ws = AngelWebSocket(app, sendErrors: !app.environment.isProduction); var fs = const LocalFileSystem(); - app.logger = Logger('angel_websocket'); + app.logger = Logger('angel3_websocket'); // This is a plug-in. It hooks all your services, // to automatically broadcast events. @@ -25,6 +25,9 @@ void main(List args) async { app.fallback((req, res) => throw AngelHttpException.notFound()); ws.onConnection.listen((socket) { + var h = socket.request.headers; + print('WebSocket onConnection $h'); + socket.onData.listen((x) { socket.send('pong', x); }); diff --git a/packages/websocket/lib/server.dart b/packages/websocket/lib/server.dart index 43e53b86..b2d16c16 100644 --- a/packages/websocket/lib/server.dart +++ b/packages/websocket/lib/server.dart @@ -157,7 +157,7 @@ class AngelWebSocket { var event = await transformEvent(e); event.eventName = '$path::${event.eventName}'; - dynamic _filter(WebSocketContext socket) { + dynamic filter(WebSocketContext socket) { if (e.service.configuration.containsKey('ws:filter')) { return e.service.configuration['ws:filter'](e, socket); } else if (e.params.containsKey('ws:filter')) { @@ -167,7 +167,7 @@ class AngelWebSocket { } } - await batchEvent(event, filter: _filter); + await batchEvent(event, filter: filter); }; } diff --git a/packages/websocket/pubspec.yaml b/packages/websocket/pubspec.yaml index c61e8ad1..bef69cb3 100644 --- a/packages/websocket/pubspec.yaml +++ b/packages/websocket/pubspec.yaml @@ -25,8 +25,8 @@ dev_dependencies: # dependency_overrides: # angel3_container: # path: ../container/angel_container -# angel3_framework: -# path: ../framework +# angel3_framework: +# path: ../framework # angel3_http_exception: # path: ../http_exception # angel3_model: diff --git a/packages/websocket/test/auth_test.dart b/packages/websocket/test/auth_test.dart index a2b3d2f8..3bc8f64a 100644 --- a/packages/websocket/test/auth_test.dart +++ b/packages/websocket/test/auth_test.dart @@ -26,6 +26,8 @@ void main() { if (username == 'foo' && password == 'bar') { return user; } + + return {}; }, );