From ef8e343ccd7ebb23b3c009b7c57f839830a82a25 Mon Sep 17 00:00:00 2001 From: Tobe O Date: Wed, 17 Apr 2019 12:41:59 -0400 Subject: [PATCH] 2.0.0-rc.5 --- CHANGELOG.md | 4 ++++ lib/src/core/response_context.dart | 8 ++++---- lib/src/core/server.dart | 2 +- pubspec.yaml | 2 +- test/all.dart | 10 ++++++++-- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56c07b0e..561082ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 2.0.0-rc.5 +* Make `serializer` `FutureOr Function(Object)`. +* Make `ResponseContext.serialize` return `Future`. + # 2.0.0-rc.4 * Support resolution of asynchronous injections in controllers and `ioc`. * Inject `RequestContext` and `ResponseContext` into requests. diff --git a/lib/src/core/response_context.dart b/lib/src/core/response_context.dart index f4fa7f0b..67eebcba 100644 --- a/lib/src/core/response_context.dart +++ b/lib/src/core/response_context.dart @@ -71,7 +71,7 @@ abstract class ResponseContext /// ```dart /// app.injectSerializer(JSON.encode); /// ``` - String Function(dynamic) serializer = c.json.encode; + FutureOr Function(dynamic) serializer = c.json.encode; /// This response's status code. int get statusCode => _statusCode; @@ -295,13 +295,13 @@ abstract class ResponseContext } /// Serializes data to the response. - bool serialize(value, {MediaType contentType}) { + Future serialize(value, {MediaType contentType}) async { if (!isOpen) throw closed(); this.contentType = contentType ?? new MediaType('application', 'json'); - var text = serializer(value); + var text = await serializer(value); if (text.isEmpty) return true; write(text); - close(); + await close(); return false; } diff --git a/lib/src/core/server.dart b/lib/src/core/server.dart index f75b2787..8d5d00d8 100644 --- a/lib/src/core/server.dart +++ b/lib/src/core/server.dart @@ -51,7 +51,7 @@ class Angel extends Routable { final MimeTypeResolver mimeTypeResolver = new MimeTypeResolver(); /// A middleware to inject a serialize on every request. - String Function(dynamic) serializer; + FutureOr Function(dynamic) serializer; /// A [Map] of dependency data obtained via reflection. /// diff --git a/pubspec.yaml b/pubspec.yaml index 7ef0ef86..e092d03b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: angel_framework -version: 2.0.0-rc.4 +version: 2.0.0-rc.5 description: A high-powered HTTP server with dependency injection, routing and much more. author: Tobe O homepage: https://github.com/angel-dart/angel_framework diff --git a/test/all.dart b/test/all.dart index 10051ce7..8a944ff6 100644 --- a/test/all.dart +++ b/test/all.dart @@ -1,18 +1,20 @@ import 'dart:io'; - import 'package:io/ansi.dart'; - import 'accepts_test.dart' as accepts; import 'anonymous_service_test.dart' as anonymous_service; +import 'body_test.dart' as body; import 'controller_test.dart' as controller; +import 'detach_test.dart' as detach; import 'di_test.dart' as di; import 'encoders_buffer_test.dart' as encoders_buffer; +import 'env_test.dart' as env; import 'exception_test.dart' as exception; import 'extension_test.dart' as extension; import 'find_one_test.dart' as find_one; import 'general_test.dart' as general; import 'hooked_test.dart' as hooked; import 'parameter_meta_test.dart' as parameter_meta; +import 'parse_id_test.dart' as parse_id; import 'precontained_test.dart' as precontained; import 'primitives_test.dart' as primitives; import 'repeat_request_test.dart' as repeat_request; @@ -30,15 +32,19 @@ main() { print(cyan.wrap('Running tests on ${Platform.version}')); group('accepts', accepts.main); group('anonymous service', anonymous_service.main); + group('body', body.main); group('controller', controller.main); + group('detach', detach.main); group('di', di.main); group('encoders_buffer', encoders_buffer.main); + group('env', env.main); group('exception', exception.main); group('extension', extension.main); group('find_one', find_one.main); group('general', general.main); group('hooked', hooked.main); group('parameter_meta', parameter_meta.main); + group('parse_id', parse_id.main); group('precontained', precontained.main); group('primitives', primitives.main); group('repeat request', repeat_request.main);