createRequestDispatcher function

RequestDispatcher createRequestDispatcher(
  1. List<DispatcherBuilder> dispatcherBuilders, {
  2. bool corsEnabled = false,
  3. String allowedOrigins = '',
  4. Handler defaultHandler = defaultHandler,
})

Implementation

RequestDispatcher createRequestDispatcher(
  List<DispatcherBuilder> dispatcherBuilders, {
  bool corsEnabled = false,
  String allowedOrigins = '',
  Handler defaultHandler = defaultHandler,
}) {
  var requestMatcher = asyncMatcher<Request, Response>();
  if (corsEnabled) {
    if (allowedOrigins.isEmpty) {
      throw StateError(
          'CORS is enabled, but no allowed origins are specified.');
    }
    requestMatcher = requestMatcher.addCorsHandler();
  }
  for (var element in dispatcherBuilders) {
    requestMatcher = requestMatcher.appendMatchers(element);
  }
  return (request) async {
    var response = await requestMatcher.otherwise(defaultHandler)(request);
    if (corsEnabled) {
      return response.change(headers: {
        ...response.headers,
        ...corsHeaders,
        'access-control-allow-origin': allowedOrigins
      });
    }
    return response;
  };
}