| Index: mojo/public/dart/third_party/shelf/lib/src/pipeline.dart
|
| diff --git a/mojo/public/dart/third_party/shelf/lib/src/pipeline.dart b/mojo/public/dart/third_party/shelf/lib/src/pipeline.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..016e5fc3696c297395f6b1f51f4032103db52584
|
| --- /dev/null
|
| +++ b/mojo/public/dart/third_party/shelf/lib/src/pipeline.dart
|
| @@ -0,0 +1,45 @@
|
| +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +library shelf.pipeline;
|
| +
|
| +import 'handler.dart';
|
| +import 'middleware.dart';
|
| +
|
| +/// A helper that makes it easy to compose a set of [Middleware] and a
|
| +/// [Handler].
|
| +///
|
| +/// var handler = const Pipeline()
|
| +/// .addMiddleware(loggingMiddleware)
|
| +/// .addMiddleware(cachingMiddleware)
|
| +/// .addHandler(application);
|
| +class Pipeline {
|
| + final Pipeline _parent;
|
| + final Middleware _middleware;
|
| +
|
| + const Pipeline()
|
| + : _middleware = null,
|
| + _parent = null;
|
| +
|
| + Pipeline._(this._middleware, this._parent);
|
| +
|
| + /// Returns a new [Pipeline] with [middleware] added to the existing set of
|
| + /// [Middleware].
|
| + ///
|
| + /// [middleware] will be the last [Middleware] to process a request and
|
| + /// the first to process a response.
|
| + Pipeline addMiddleware(Middleware middleware) =>
|
| + new Pipeline._(middleware, this);
|
| +
|
| + /// Returns a new [Handler] with [handler] as the final processor of a
|
| + /// [Request] if all of the middleware in the pipeline have passed the request
|
| + /// through.
|
| + Handler addHandler(Handler handler) {
|
| + if (_middleware == null) return handler;
|
| + return _parent.addHandler(_middleware(handler));
|
| + }
|
| +
|
| + /// Exposes this pipeline of [Middleware] as a single middleware instance.
|
| + Middleware get middleware => addHandler;
|
| +}
|
|
|