controllerItemRouteHandler function

Future<Response> Function(Request request) controllerItemRouteHandler(
  1. Type controllerType,
  2. Symbol methodName
)

Implementation

Future<Response> Function(Request request) controllerItemRouteHandler(
    Type controllerType, Symbol methodName) {
  return (Request request) {
    final _controller =
        ControllerMirrorFactory.createMirror(controllerType, request.container);
    final result = _controller.invoke(methodName, [request]).reflectee;
    if (result is Response) {
      return Future.value(result);
    } else if (result is Future<Response>) {
      return result;
    } else if (result is Future) {
      return result.then((value) => Response(200, body: value));
    } else {
      return Future.value(Response(200, body: result));
    }
  };
}