Index: pkg/http/lib/src/request.dart |
diff --git a/pkg/http/lib/src/request.dart b/pkg/http/lib/src/request.dart |
deleted file mode 100644 |
index b83e6a71b4cb87a813f0d54931254e58dac1d079..0000000000000000000000000000000000000000 |
--- a/pkg/http/lib/src/request.dart |
+++ /dev/null |
@@ -1,163 +0,0 @@ |
-// Copyright (c) 2013, 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 request; |
- |
-import 'dart:convert'; |
-import 'dart:typed_data'; |
- |
-import 'package:http_parser/http_parser.dart'; |
- |
-import 'base_request.dart'; |
-import 'byte_stream.dart'; |
-import 'utils.dart'; |
- |
-/// An HTTP request where the entire request body is known in advance. |
-class Request extends BaseRequest { |
- /// The size of the request body, in bytes. This is calculated from |
- /// [bodyBytes]. |
- /// |
- /// The content length cannot be set for [Request], since it's automatically |
- /// calculated from [bodyBytes]. |
- int get contentLength => bodyBytes.length; |
- |
- set contentLength(int value) { |
- throw new UnsupportedError("Cannot set the contentLength property of " |
- "non-streaming Request objects."); |
- } |
- |
- /// The default encoding to use when converting between [bodyBytes] and |
- /// [body]. This is only used if [encoding] hasn't been manually set and if |
- /// the content-type header has no encoding information. |
- Encoding _defaultEncoding; |
- |
- /// The encoding used for the request. This encoding is used when converting |
- /// between [bodyBytes] and [body]. |
- /// |
- /// If the request has a `Content-Type` header and that header has a `charset` |
- /// parameter, that parameter's value is used as the encoding. Otherwise, if |
- /// [encoding] has been set manually, that encoding is used. If that hasn't |
- /// been set either, this defaults to [UTF8]. |
- /// |
- /// If the `charset` parameter's value is not a known [Encoding], reading this |
- /// will throw a [FormatException]. |
- /// |
- /// If the request has a `Content-Type` header, setting this will set the |
- /// charset parameter on that header. |
- Encoding get encoding { |
- if (_contentType == null || |
- !_contentType.parameters.containsKey('charset')) { |
- return _defaultEncoding; |
- } |
- return requiredEncodingForCharset(_contentType.parameters['charset']); |
- } |
- |
- set encoding(Encoding value) { |
- _checkFinalized(); |
- _defaultEncoding = value; |
- var contentType = _contentType; |
- if (contentType == null) return; |
- _contentType = contentType.change(parameters: {'charset': value.name}); |
- } |
- |
- // TODO(nweiz): make this return a read-only view |
- /// The bytes comprising the body of the request. This is converted to and |
- /// from [body] using [encoding]. |
- /// |
- /// This list should only be set, not be modified in place. |
- Uint8List get bodyBytes => _bodyBytes; |
- Uint8List _bodyBytes; |
- |
- set bodyBytes(List<int> value) { |
- _checkFinalized(); |
- _bodyBytes = toUint8List(value); |
- } |
- |
- /// The body of the request as a string. This is converted to and from |
- /// [bodyBytes] using [encoding]. |
- /// |
- /// When this is set, if the request does not yet have a `Content-Type` |
- /// header, one will be added with the type `text/plain`. Then the `charset` |
- /// parameter of the `Content-Type` header (whether new or pre-existing) will |
- /// be set to [encoding] if it wasn't already set. |
- String get body => encoding.decode(bodyBytes); |
- |
- set body(String value) { |
- bodyBytes = encoding.encode(value); |
- var contentType = _contentType; |
- if (contentType == null) { |
- _contentType = new MediaType("text", "plain", {'charset': encoding.name}); |
- } else if (!contentType.parameters.containsKey('charset')) { |
- _contentType = contentType.change(parameters: {'charset': encoding.name}); |
- } |
- } |
- |
- /// The form-encoded fields in the body of the request as a map from field |
- /// names to values. The form-encoded body is converted to and from |
- /// [bodyBytes] using [encoding] (in the same way as [body]). |
- /// |
- /// If the request doesn't have a `Content-Type` header of |
- /// `application/x-www-form-urlencoded`, reading this will throw a |
- /// [StateError]. |
- /// |
- /// If the request has a `Content-Type` header with a type other than |
- /// `application/x-www-form-urlencoded`, setting this will throw a |
- /// [StateError]. Otherwise, the content type will be set to |
- /// `application/x-www-form-urlencoded`. |
- /// |
- /// This map should only be set, not modified in place. |
- Map<String, String> get bodyFields { |
- var contentType = _contentType; |
- if (contentType == null || |
- contentType.mimeType != "application/x-www-form-urlencoded") { |
- throw new StateError('Cannot access the body fields of a Request without ' |
- 'content-type "application/x-www-form-urlencoded".'); |
- } |
- |
- return queryToMap(body, encoding: encoding); |
- } |
- |
- set bodyFields(Map<String, String> fields) { |
- var contentType = _contentType; |
- if (contentType == null) { |
- _contentType = new MediaType("application", "x-www-form-urlencoded"); |
- } else if (contentType.mimeType != "application/x-www-form-urlencoded") { |
- throw new StateError('Cannot set the body fields of a Request with ' |
- 'content-type "${contentType.mimeType}".'); |
- } |
- |
- this.body = mapToQuery(fields, encoding: encoding); |
- } |
- |
- /// Creates a new HTTP request. |
- Request(String method, Uri url) |
- : super(method, url), |
- _defaultEncoding = UTF8, |
- _bodyBytes = new Uint8List(0); |
- |
- /// Freezes all mutable fields and returns a single-subscription [ByteStream] |
- /// containing the request body. |
- ByteStream finalize() { |
- super.finalize(); |
- return new ByteStream.fromBytes(bodyBytes); |
- } |
- |
- /// The `Content-Type` header of the request (if it exists) as a |
- /// [MediaType]. |
- MediaType get _contentType { |
- var contentType = headers['content-type']; |
- if (contentType == null) return null; |
- return new MediaType.parse(contentType); |
- } |
- |
- set _contentType(MediaType value) { |
- headers['content-type'] = value.toString(); |
- } |
- |
- /// Throw an error if this request has been finalized. |
- void _checkFinalized() { |
- if (!finalized) return; |
- throw new StateError("Can't modify a finalized Request."); |
- } |
-} |