@@ -38,11 +38,6 @@ typedef RequestInterceptor(HttpResponseConfig);
38
38
typedef RequestErrorInterceptor (dynamic );
39
39
typedef Response (HttpResponse );
40
40
typedef ResponseError (dynamic );
41
- typedef _CompleteResponse (HttpResponse );
42
- typedef _RunCoaleced (fn ());
43
-
44
- _runNow (fn ()) => fn ();
45
- _identity (x) => x;
46
41
47
42
/**
48
43
* HttpInterceptors are used to modify the Http request. They can be added to
@@ -374,29 +369,23 @@ class HttpDefaults {
374
369
*/
375
370
@Injectable ()
376
371
class Http {
377
- final _pendingRequests = new HashMap <String , async.Future <HttpResponse >>();
378
- final BrowserCookies _cookies;
379
- final LocationWrapper _location;
380
- final UrlRewriter _rewriter;
381
- final HttpBackend _backend;
382
- final HttpInterceptors _interceptors;
383
- final RootScope _rootScope;
384
- final HttpConfig _httpConfig;
385
- final VmTurnZone _zone;
386
-
387
- final _responseQueue = < Function > [];
388
- async .Timer _responseQueueTimer;
372
+ var _pendingRequests = new HashMap <String , async.Future <HttpResponse >>();
373
+ BrowserCookies _cookies;
374
+ LocationWrapper _location;
375
+ UrlRewriter _rewriter;
376
+ HttpBackend _backend;
377
+ HttpInterceptors _interceptors;
389
378
390
379
/**
391
380
* The defaults for [Http]
392
381
*/
393
- final HttpDefaults defaults;
382
+ HttpDefaults defaults;
394
383
395
384
/**
396
385
* Constructor, useful for DI.
397
386
*/
398
- Http (this ._cookies, this ._location, this ._rewriter, this ._backend, this .defaults,
399
- this ._interceptors , this ._rootScope, this ._httpConfig, this ._zone );
387
+ Http (this ._cookies, this ._location, this ._rewriter, this ._backend,
388
+ this .defaults , this ._interceptors );
400
389
401
390
/**
402
391
* Parse a [requestUrl] and determine whether this is a same-origin request as
@@ -493,25 +482,29 @@ class Http {
493
482
return new async .Future .value (new HttpResponse .copy (cachedResponse));
494
483
}
495
484
496
- requestFromBackend (runCoalesced, onComplete, onError) => _backend.request (
497
- url,
498
- method: method,
499
- requestHeaders: config.headers,
500
- sendData: config.data,
501
- withCredentials: withCredentials
502
- ).then ((dom.HttpRequest req) => _onResponse (req, runCoalesced, onComplete, config, cache, url),
503
- onError: (e) => _onError (e, runCoalesced, onError, config, url));
504
-
505
- async .Future responseFuture;
506
- if (_httpConfig.coalesceDuration != null ) {
507
- async .Completer completer = new async .Completer ();
508
- responseFuture = completer.future;
509
- _zone.runOutsideAngular (() => requestFromBackend (
510
- _coalesce, completer.complete, completer.completeError));
511
- } else {
512
- responseFuture = requestFromBackend (_runNow, _identity, _identity);
513
- }
514
- return _pendingRequests[url] = responseFuture;
485
+ var result = _backend.request (url,
486
+ method: method,
487
+ requestHeaders: config.headers,
488
+ sendData: config.data,
489
+ withCredentials: withCredentials).then ((dom.HttpRequest value) {
490
+ // TODO: Uncomment after apps migrate off of this class.
491
+ // assert(value.status >= 200 && value.status < 300);
492
+
493
+ var response = new HttpResponse (value.status, value.responseText,
494
+ parseHeaders (value), config);
495
+
496
+ if (cache != null ) cache.put (url, response);
497
+ _pendingRequests.remove (url);
498
+ return response;
499
+ }, onError: (error) {
500
+ if (error is ! dom.ProgressEvent ) throw error;
501
+ dom.ProgressEvent event = error;
502
+ _pendingRequests.remove (url);
503
+ dom.HttpRequest request = event.currentTarget;
504
+ return new async .Future .error (
505
+ new HttpResponse (request.status, request.response, parseHeaders (request), config));
506
+ });
507
+ return _pendingRequests[url] = result;
515
508
};
516
509
517
510
var chain = [[serverRequest, null ]];
@@ -657,50 +650,11 @@ class Http {
657
650
xsrfCookieName: xsrfCookieName, interceptors: interceptors, cache: cache,
658
651
timeout: timeout);
659
652
660
- _onResponse (dom.HttpRequest request, _RunCoaleced runCoalesced, _CompleteResponse onComplete,
661
- HttpResponseConfig config, cache, String url) {
662
- // TODO: Uncomment after apps migrate off of this class.
663
- // assert(request.status >= 200 && request.status < 300);
664
-
665
- var response = new HttpResponse (
666
- request.status, request.responseText, parseHeaders (request), config);
667
-
668
- if (cache != null ) cache.put (url, response);
669
- _pendingRequests.remove (url);
670
- return runCoalesced (() => onComplete (response));
671
- }
672
-
673
- _onError (error, _RunCoaleced runCoalesced, _CompleteResponse onError,
674
- HttpResponseConfig config, String url) {
675
- if (error is ! dom.ProgressEvent ) throw error;
676
- dom.ProgressEvent event = error;
677
- _pendingRequests.remove (url);
678
- dom.HttpRequest request = event.currentTarget;
679
- var response = new HttpResponse (
680
- request.status, request.response, parseHeaders (request), config);
681
- return runCoalesced (() => onError (new async .Future .error (response)));
682
- }
683
-
684
- _coalesce (fn ()) {
685
- _responseQueue.add (fn);
686
- if (_responseQueueTimer == null ) {
687
- _responseQueueTimer = new async .Timer (_httpConfig.coalesceDuration, _flushResponseQueue);
688
- }
689
- }
690
-
691
- _flushResponseQueue () => _rootScope.apply (_flushResponseQueueSync);
692
-
693
- _flushResponseQueueSync () {
694
- _responseQueueTimer = null ;
695
- _responseQueue.forEach (_runNow);
696
- _responseQueue.clear ();
697
- }
698
-
699
653
/**
700
654
* Parse raw headers into key-value object
701
655
*/
702
- static Map <String , String > parseHeaders (dom.HttpRequest request ) {
703
- var headers = request .getAllResponseHeaders ();
656
+ static Map <String , String > parseHeaders (dom.HttpRequest value ) {
657
+ var headers = value .getAllResponseHeaders ();
704
658
705
659
var parsed = new HashMap ();
706
660
@@ -750,10 +704,3 @@ class Http {
750
704
.replaceAll ('%2C' , ',' )
751
705
.replaceAll ('%20' , pctEncodeSpaces ? '%20' : '+' );
752
706
}
753
-
754
- @Injectable ()
755
- class HttpConfig {
756
- final Duration coalesceDuration;
757
-
758
- HttpConfig ({this .coalesceDuration});
759
- }
0 commit comments