| Index: pkg/http/lib/src/base_request.dart
|
| diff --git a/pkg/http/lib/src/base_request.dart b/pkg/http/lib/src/base_request.dart
|
| deleted file mode 100644
|
| index ba87e52b3ec12de4dca723698eca0e5982de1766..0000000000000000000000000000000000000000
|
| --- a/pkg/http/lib/src/base_request.dart
|
| +++ /dev/null
|
| @@ -1,140 +0,0 @@
|
| -// Copyright (c) 2012, 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 base_request;
|
| -
|
| -import 'dart:async';
|
| -import 'dart:collection';
|
| -
|
| -import 'byte_stream.dart';
|
| -import 'client.dart';
|
| -import 'streamed_response.dart';
|
| -import 'utils.dart';
|
| -
|
| -/// The base class for HTTP requests.
|
| -///
|
| -/// Subclasses of [BaseRequest] can be constructed manually and passed to
|
| -/// [BaseClient.send], which allows the user to provide fine-grained control
|
| -/// over the request properties. However, usually it's easier to use convenience
|
| -/// methods like [get] or [BaseClient.get].
|
| -abstract class BaseRequest {
|
| - /// The HTTP method of the request. Most commonly "GET" or "POST", less
|
| - /// commonly "HEAD", "PUT", or "DELETE". Non-standard method names are also
|
| - /// supported.
|
| - final String method;
|
| -
|
| - /// The URL to which the request will be sent.
|
| - final Uri url;
|
| -
|
| - /// The size of the request body, in bytes.
|
| - ///
|
| - /// This defaults to `null`, which indicates that the size of the request is
|
| - /// not known in advance.
|
| - int get contentLength => _contentLength;
|
| - int _contentLength;
|
| -
|
| - set contentLength(int value) {
|
| - if (value != null && value < 0) {
|
| - throw new ArgumentError("Invalid content length $value.");
|
| - }
|
| - _checkFinalized();
|
| - _contentLength = value;
|
| - }
|
| -
|
| - /// Whether a persistent connection should be maintained with the server.
|
| - /// Defaults to true.
|
| - bool get persistentConnection => _persistentConnection;
|
| - bool _persistentConnection = true;
|
| -
|
| - set persistentConnection(bool value) {
|
| - _checkFinalized();
|
| - _persistentConnection = value;
|
| - }
|
| -
|
| - /// Whether the client should follow redirects while resolving this request.
|
| - /// Defaults to true.
|
| - bool get followRedirects => _followRedirects;
|
| - bool _followRedirects = true;
|
| -
|
| - set followRedirects(bool value) {
|
| - _checkFinalized();
|
| - _followRedirects = value;
|
| - }
|
| -
|
| - /// The maximum number of redirects to follow when [followRedirects] is true.
|
| - /// If this number is exceeded the [BaseResponse] future will signal a
|
| - /// [RedirectException]. Defaults to 5.
|
| - int get maxRedirects => _maxRedirects;
|
| - int _maxRedirects = 5;
|
| -
|
| - set maxRedirects(int value) {
|
| - _checkFinalized();
|
| - _maxRedirects = value;
|
| - }
|
| -
|
| - // TODO(nweiz): automatically parse cookies from headers
|
| -
|
| - // TODO(nweiz): make this a HttpHeaders object
|
| - /// The headers for this request.
|
| - final Map<String, String> headers;
|
| -
|
| - /// Whether the request has been finalized.
|
| - bool get finalized => _finalized;
|
| - bool _finalized = false;
|
| -
|
| - /// Creates a new HTTP request.
|
| - BaseRequest(this.method, this.url)
|
| - : headers = new LinkedHashMap(
|
| - equals: (key1, key2) => key1.toLowerCase() == key2.toLowerCase(),
|
| - hashCode: (key) => key.toLowerCase().hashCode);
|
| -
|
| - /// Finalizes the HTTP request in preparation for it being sent. This freezes
|
| - /// all mutable fields and returns a single-subscription [ByteStream] that
|
| - /// emits the body of the request.
|
| - ///
|
| - /// The base implementation of this returns null rather than a [ByteStream];
|
| - /// subclasses are responsible for creating the return value, which should be
|
| - /// single-subscription to ensure that no data is dropped. They should also
|
| - /// freeze any additional mutable fields they add that don't make sense to
|
| - /// change after the request headers are sent.
|
| - ByteStream finalize() {
|
| - // TODO(nweiz): freeze headers
|
| - if (finalized) throw new StateError("Can't finalize a finalized Request.");
|
| - _finalized = true;
|
| - return null;
|
| - }
|
| -
|
| - /// Sends this request.
|
| - ///
|
| - /// This automatically initializes a new [Client] and closes that client once
|
| - /// the request is complete. If you're planning on making multiple requests to
|
| - /// the same server, you should use a single [Client] for all of those
|
| - /// requests.
|
| - Future<StreamedResponse> send() {
|
| - var client = new Client();
|
| - return client.send(this).then((response) {
|
| - var stream = onDone(response.stream, client.close);
|
| - return new StreamedResponse(
|
| - new ByteStream(stream),
|
| - response.statusCode,
|
| - contentLength: response.contentLength,
|
| - request: response.request,
|
| - headers: response.headers,
|
| - isRedirect: response.isRedirect,
|
| - persistentConnection: response.persistentConnection,
|
| - reasonPhrase: response.reasonPhrase);
|
| - }).catchError((e) {
|
| - client.close();
|
| - throw e;
|
| - });
|
| - }
|
| -
|
| - // Throws an error if this request has been finalized.
|
| - void _checkFinalized() {
|
| - if (!finalized) return;
|
| - throw new StateError("Can't modify a finalized Request.");
|
| - }
|
| -
|
| - String toString() => "$method $url";
|
| -}
|
|
|