diff --git a/CHANGELOG.md b/CHANGELOG.md index d16a8a41..b091fb68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 2.0.0-rc.7 +* `AnonymousService` can override `readData`. +* `Service.map` now overrides `readData`. + # 2.0.0-rc.6 * Make `redirect` and `download` methods asynchronous. diff --git a/lib/src/core/anonymous_service.dart b/lib/src/core/anonymous_service.dart index 2da73870..73324795 100644 --- a/lib/src/core/anonymous_service.dart +++ b/lib/src/core/anonymous_service.dart @@ -1,5 +1,6 @@ import 'dart:async'; - +import 'request_context.dart'; +import 'response_context.dart'; import 'service.dart'; /// An easy helper class to create one-off services without having to create an entire class. @@ -17,8 +18,9 @@ class AnonymousService extends Service { FutureOr create(Data data, [Map params]), FutureOr modify(Id id, Data data, [Map params]), FutureOr update(Id id, Data data, [Map params]), - FutureOr remove(Id id, [Map params])}) - : super() { + FutureOr remove(Id id, [Map params]), + FutureOr Function(RequestContext, ResponseContext) readData}) + : super(readData: readData) { _index = index; _read = read; _create = create; diff --git a/lib/src/core/service.dart b/lib/src/core/service.dart index 0fcfc5a7..8b383023 100644 --- a/lib/src/core/service.dart +++ b/lib/src/core/service.dart @@ -160,8 +160,15 @@ class Service extends Routable { /// using two converter functions. /// /// Handy utility for handling data in a type-safe manner. - Service map(U Function(Data) encoder, Data Function(U) decoder) { + Service map(U Function(Data) encoder, Data Function(U) decoder, + {FutureOr Function(RequestContext, ResponseContext) readData}) { + readData ??= (req, res) async { + var inner = await this.readData(req, res); + return encoder(inner); + }; + return new AnonymousService( + readData: readData, index: ([params]) { return index(params).then((it) => it.map(encoder).toList()); }, diff --git a/pubspec.yaml b/pubspec.yaml index d2fca7fe..7cce6681 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: angel_framework -version: 2.0.0-rc.6 +version: 2.0.0-rc.7 description: A high-powered HTTP server with dependency injection, routing and much more. author: Tobe O homepage: https://github.com/angel-dart/angel_framework