| Index: third_party/pkg/angular/lib/core_dom/http.dart
|
| diff --git a/third_party/pkg/angular/lib/core_dom/http.dart b/third_party/pkg/angular/lib/core_dom/http.dart
|
| index 15f44dbc88efa9847197f1954357c456c82020a3..fdae907e81eddab29e309709f4e4158fae903c3b 100644
|
| --- a/third_party/pkg/angular/lib/core_dom/http.dart
|
| +++ b/third_party/pkg/angular/lib/core_dom/http.dart
|
| @@ -1,6 +1,6 @@
|
| -part of angular.core.dom;
|
| +part of angular.core.dom_internal;
|
|
|
| -@NgInjectableService()
|
| +@Injectable()
|
| class UrlRewriter {
|
| String call(url) => url;
|
| }
|
| @@ -14,7 +14,7 @@ class UrlRewriter {
|
| * During testing this implementation is swapped with [MockHttpBackend] which
|
| * can be trained with responses.
|
| */
|
| -@NgInjectableService()
|
| +@Injectable()
|
| class HttpBackend {
|
| /**
|
| * Wrapper around dart:html's [HttpRequest.request]
|
| @@ -29,7 +29,7 @@ class HttpBackend {
|
| sendData: sendData, onProgress: onProgress);
|
| }
|
|
|
| -@NgInjectableService()
|
| +@Injectable()
|
| class LocationWrapper {
|
| get location => dom.window.location;
|
| }
|
| @@ -95,7 +95,7 @@ class DefaultTransformDataHttpInterceptor implements HttpInterceptor {
|
| /**
|
| * A list of [HttpInterceptor]s.
|
| */
|
| -@NgInjectableService()
|
| +@Injectable()
|
| class HttpInterceptors {
|
| List<HttpInterceptor> _interceptors =
|
| [new DefaultTransformDataHttpInterceptor()];
|
| @@ -234,7 +234,7 @@ class HttpResponse {
|
| /**
|
| * Default header configuration.
|
| */
|
| -@NgInjectableService()
|
| +@Injectable()
|
| class HttpDefaultHeaders {
|
| static var _defaultContentType = 'application/json;charset=utf-8';
|
| var _headers = {
|
| @@ -280,7 +280,7 @@ class HttpDefaultHeaders {
|
| * The default implementation provides headers which the
|
| * Angular team believes to be useful.
|
| */
|
| -@NgInjectableService()
|
| +@Injectable()
|
| class HttpDefaults {
|
| /**
|
| * The [HttpDefaultHeaders] object used by [Http] to add default headers
|
| @@ -367,7 +367,7 @@ class HttpDefaults {
|
| *
|
| * NOTE: < not yet documented >
|
| */
|
| -@NgInjectableService()
|
| +@Injectable()
|
| class Http {
|
| var _pendingRequests = <String, async.Future<HttpResponse>>{};
|
| BrowserCookies _cookies;
|
| @@ -388,16 +388,6 @@ class Http {
|
| this.defaults, this._interceptors);
|
|
|
| /**
|
| - * DEPRECATED
|
| - */
|
| - async.Future<String> getString(String url, {bool withCredentials,
|
| - void onProgress(dom.ProgressEvent e), Cache cache}) =>
|
| - request(url,
|
| - withCredentials: withCredentials,
|
| - onProgress: onProgress,
|
| - cache: cache).then((HttpResponse xhr) => xhr.responseText);
|
| -
|
| - /**
|
| * Parse a [requestUrl] and determine whether this is a same-origin request as
|
| * the application document.
|
| */
|
| @@ -431,7 +421,7 @@ class Http {
|
| String method,
|
| data,
|
| Map<String, dynamic> params,
|
| - Map<String, String> headers,
|
| + Map<String, dynamic> headers,
|
| xsrfHeaderName,
|
| xsrfCookieName,
|
| interceptors,
|
| @@ -442,6 +432,7 @@ class Http {
|
| throw ['timeout not implemented'];
|
| }
|
|
|
| + url = _rewriter(url);
|
| method = method.toUpperCase();
|
|
|
| if (headers == null) headers = {};
|
| @@ -461,8 +452,7 @@ class Http {
|
| });
|
|
|
| var serverRequest = (HttpResponseConfig config) {
|
| - assert(config.data == null || config.data is String ||
|
| - config.data is dom.File);
|
| + assert(config.data == null || config.data is String || config.data is dom.File);
|
|
|
| // Strip content-type if data is undefined
|
| if (config.data == null) {
|
| @@ -471,12 +461,45 @@ class Http {
|
| .forEach((h) => headers.remove(h));
|
| }
|
|
|
| - return request(null,
|
| - config: config,
|
| - method: method,
|
| - sendData: config.data,
|
| - requestHeaders: config.headers,
|
| - cache: cache);
|
| + url = _buildUrl(config.url, config.params);
|
| +
|
| + if (cache == false) {
|
| + cache = null;
|
| + } else if (cache == null) {
|
| + cache = defaults.cache;
|
| + }
|
| +
|
| + // We return a pending request only if caching is enabled.
|
| + if (cache != null && _pendingRequests.containsKey(url)) {
|
| + return _pendingRequests[url];
|
| + }
|
| + var cachedResponse = (cache != null && method == 'GET') ? cache.get(url) : null;
|
| + if (cachedResponse != null) {
|
| + return new async.Future.value(new HttpResponse.copy(cachedResponse));
|
| + }
|
| +
|
| + var result = _backend.request(url,
|
| + method: method,
|
| + requestHeaders: config.headers,
|
| + sendData: config.data).then((dom.HttpRequest value) {
|
| + // TODO: Uncomment after apps migrate off of this class.
|
| + // assert(value.status >= 200 && value.status < 300);
|
| +
|
| + var response = new HttpResponse(value.status, value.responseText,
|
| + parseHeaders(value), config);
|
| +
|
| + if (cache != null) cache.put(url, response);
|
| + _pendingRequests.remove(url);
|
| + return response;
|
| + }, onError: (error) {
|
| + if (error is! dom.ProgressEvent) throw error;
|
| + dom.ProgressEvent event = error;
|
| + _pendingRequests.remove(url);
|
| + dom.HttpRequest request = event.currentTarget;
|
| + return new async.Future.error(
|
| + new HttpResponse(request.status, request.response, parseHeaders(request), config));
|
| + });
|
| + return _pendingRequests[url] = result;
|
| };
|
|
|
| var chain = [[serverRequest, null]];
|
| @@ -632,7 +655,6 @@ class Http {
|
| });
|
| return parsed;
|
| }
|
| -
|
| /**
|
| * Returns an [Iterable] of [Future] [HttpResponse]s for the requests
|
| * that the [Http] service is currently waiting for.
|
| @@ -640,73 +662,6 @@ class Http {
|
| Iterable<async.Future<HttpResponse> > get pendingRequests =>
|
| _pendingRequests.values;
|
|
|
| - /**
|
| - * DEPRECATED
|
| - */
|
| - async.Future<HttpResponse> request(String rawUrl,
|
| - { HttpResponseConfig config,
|
| - String method: 'GET',
|
| - bool withCredentials: false,
|
| - String responseType,
|
| - String mimeType,
|
| - Map<String, String> requestHeaders,
|
| - sendData,
|
| - void onProgress(dom.ProgressEvent e),
|
| - /*Cache<String, HttpResponse> or false*/ cache }) {
|
| - String url;
|
| -
|
| - if (config == null) {
|
| - url = _rewriter(rawUrl);
|
| - config = new HttpResponseConfig(url: url);
|
| - } else {
|
| - url = _buildUrl(config.url, config.params);
|
| - }
|
| -
|
| - if (cache == false) {
|
| - cache = null;
|
| - } else if (cache == null) {
|
| - cache = defaults.cache;
|
| - }
|
| - // We return a pending request only if caching is enabled.
|
| - if (cache != null && _pendingRequests.containsKey(url)) {
|
| - return _pendingRequests[url];
|
| - }
|
| - var cachedResponse = (cache != null && method == 'GET')
|
| - ? cache.get(url)
|
| - : null;
|
| - if (cachedResponse != null) {
|
| - return new async.Future.value(new HttpResponse.copy(cachedResponse));
|
| - }
|
| -
|
| - var result = _backend.request(url,
|
| - method: method,
|
| - withCredentials: withCredentials,
|
| - responseType: responseType,
|
| - mimeType: mimeType,
|
| - requestHeaders: requestHeaders,
|
| - sendData: sendData,
|
| - onProgress: onProgress).then((dom.HttpRequest value) {
|
| - // TODO: Uncomment after apps migrate off of this class.
|
| - // assert(value.status >= 200 && value.status < 300);
|
| -
|
| - var response = new HttpResponse(value.status, value.responseText,
|
| - parseHeaders(value), config);
|
| -
|
| - if (cache != null) cache.put(url, response);
|
| - _pendingRequests.remove(url);
|
| - return response;
|
| - }, onError: (error) {
|
| - if (error is! dom.ProgressEvent) throw error;
|
| - dom.ProgressEvent event = error;
|
| - _pendingRequests.remove(url);
|
| - dom.HttpRequest request = event.currentTarget;
|
| - return new async.Future.error(
|
| - new HttpResponse(request.status, request.response,
|
| - parseHeaders(request), config));
|
| - });
|
| - return _pendingRequests[url] = result;
|
| - }
|
| -
|
| _buildUrl(String url, Map<String, dynamic> params) {
|
| if (params == null) return url;
|
| var parts = [];
|
|
|