OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'dart:async'; | 5 import 'dart:async'; |
6 import 'dart:convert'; | 6 import 'dart:convert'; |
7 import 'dart:math' as math; | 7 import 'dart:math' as math; |
8 | 8 |
9 import 'package:async/async.dart' hide StreamQueue; | 9 import 'package:async/async.dart' hide StreamQueue; |
10 import 'package:crypto/crypto.dart'; | 10 import 'package:crypto/crypto.dart'; |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 var result = {}; | 201 var result = {}; |
202 map1.forEach((key, value) { | 202 map1.forEach((key, value) { |
203 result[key] = value; | 203 result[key] = value; |
204 }); | 204 }); |
205 map2.forEach((key, value) { | 205 map2.forEach((key, value) { |
206 result[key] = value; | 206 result[key] = value; |
207 }); | 207 }); |
208 return result; | 208 return result; |
209 } | 209 } |
210 | 210 |
211 /// Returns a sink that maps events sent to [original] using [fn]. | |
212 StreamSink mapSink(StreamSink original, fn(event)) { | |
213 var controller = new StreamController(sync: true); | |
214 controller.stream.listen( | |
215 (event) => original.add(fn(event)), | |
216 onError: (error, stackTrace) => original.addError(error, stackTrace), | |
217 onDone: () => original.close()); | |
218 return controller.sink; | |
219 } | |
220 | |
221 /// Like [runZoned], but [zoneValues] are set for the callbacks in | 211 /// Like [runZoned], but [zoneValues] are set for the callbacks in |
222 /// [zoneSpecification] and [onError]. | 212 /// [zoneSpecification] and [onError]. |
223 runZonedWithValues(body(), {Map zoneValues, | 213 runZonedWithValues(body(), {Map zoneValues, |
224 ZoneSpecification zoneSpecification, Function onError}) { | 214 ZoneSpecification zoneSpecification, Function onError}) { |
225 return runZoned(() { | 215 return runZoned(() { |
226 return runZoned(body, | 216 return runZoned(body, |
227 zoneSpecification: zoneSpecification, onError: onError); | 217 zoneSpecification: zoneSpecification, onError: onError); |
228 }, zoneValues: zoneValues); | 218 }, zoneValues: zoneValues); |
229 } | 219 } |
230 | 220 |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 urlSafe: urlSafe, addLineSeparator: addLineSeparator); | 409 urlSafe: urlSafe, addLineSeparator: addLineSeparator); |
420 } | 410 } |
421 | 411 |
422 /// Returns middleware that nests all requests beneath the URL prefix [beneath]. | 412 /// Returns middleware that nests all requests beneath the URL prefix [beneath]. |
423 shelf.Middleware nestingMiddleware(String beneath) { | 413 shelf.Middleware nestingMiddleware(String beneath) { |
424 return (handler) { | 414 return (handler) { |
425 var pathHandler = new PathHandler()..add(beneath, handler); | 415 var pathHandler = new PathHandler()..add(beneath, handler); |
426 return pathHandler.handler; | 416 return pathHandler.handler; |
427 }; | 417 }; |
428 } | 418 } |
OLD | NEW |