Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(532)

Side by Side Diff: pkg/http/lib/src/multipart_request.dart

Issue 22909059: Some more removals of dart:utf. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Change ArgumentError to FormatException. Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 library multipart_request; 5 library multipart_request;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:convert';
8 import 'dart:math'; 9 import 'dart:math';
9 import 'dart:utf';
10 10
11 import 'base_request.dart'; 11 import 'base_request.dart';
12 import 'byte_stream.dart'; 12 import 'byte_stream.dart';
13 import 'multipart_file.dart'; 13 import 'multipart_file.dart';
14 import 'utils.dart'; 14 import 'utils.dart';
15 15
16 /// A `multipart/form-data` request. Such a request has both string [fields], 16 /// A `multipart/form-data` request. Such a request has both string [fields],
17 /// which function as normal form fields, and (potentially streamed) binary 17 /// which function as normal form fields, and (potentially streamed) binary
18 /// [files]. 18 /// [files].
19 /// 19 ///
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 List<MultipartFile> get files => _files; 55 List<MultipartFile> get files => _files;
56 56
57 /// The total length of the request body, in bytes. This is calculated from 57 /// The total length of the request body, in bytes. This is calculated from
58 /// [fields] and [files] and cannot be set manually. 58 /// [fields] and [files] and cannot be set manually.
59 int get contentLength { 59 int get contentLength {
60 var length = 0; 60 var length = 0;
61 61
62 fields.forEach((name, value) { 62 fields.forEach((name, value) {
63 length += "--".length + _BOUNDARY_LENGTH + "\r\n".length + 63 length += "--".length + _BOUNDARY_LENGTH + "\r\n".length +
64 _headerForField(name, value).length + 64 _headerForField(name, value).length +
65 encodeUtf8(value).length + "\r\n".length; 65 UTF8.encode(value).length + "\r\n".length;
66 }); 66 });
67 67
68 for (var file in _files) { 68 for (var file in _files) {
69 length += "--".length + _BOUNDARY_LENGTH + "\r\n".length + 69 length += "--".length + _BOUNDARY_LENGTH + "\r\n".length +
70 _headerForFile(file).length + 70 _headerForFile(file).length +
71 file.length + "\r\n".length; 71 file.length + "\r\n".length;
72 } 72 }
73 73
74 return length + "--".length + _BOUNDARY_LENGTH + "--\r\n".length; 74 return length + "--".length + _BOUNDARY_LENGTH + "--\r\n".length;
75 } 75 }
(...skipping 12 matching lines...) Expand all
88 headers['content-transfer-encoding'] = 'binary'; 88 headers['content-transfer-encoding'] = 'binary';
89 super.finalize(); 89 super.finalize();
90 90
91 var controller = new StreamController<List<int>>(sync: true); 91 var controller = new StreamController<List<int>>(sync: true);
92 92
93 void writeAscii(String string) { 93 void writeAscii(String string) {
94 assert(isPlainAscii(string)); 94 assert(isPlainAscii(string));
95 controller.add(string.codeUnits); 95 controller.add(string.codeUnits);
96 } 96 }
97 97
98 writeUtf8(String string) => controller.add(encodeUtf8(string)); 98 writeUtf8(String string) => controller.add(UTF8.encode(string));
99 writeLine() => controller.add([13, 10]); // \r\n 99 writeLine() => controller.add([13, 10]); // \r\n
100 100
101 fields.forEach((name, value) { 101 fields.forEach((name, value) {
102 writeAscii('--$boundary\r\n'); 102 writeAscii('--$boundary\r\n');
103 writeAscii(_headerForField(name, value)); 103 writeAscii(_headerForField(name, value));
104 writeUtf8(value); 104 writeUtf8(value);
105 writeLine(); 105 writeLine();
106 }); 106 });
107 107
108 Future.forEach(_files, (file) { 108 Future.forEach(_files, (file) {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 /// Returns a randomly-generated multipart boundary string 159 /// Returns a randomly-generated multipart boundary string
160 String _boundaryString() { 160 String _boundaryString() {
161 var prefix = "dart-http-boundary-"; 161 var prefix = "dart-http-boundary-";
162 var list = new List<int>.generate(_BOUNDARY_LENGTH - prefix.length, 162 var list = new List<int>.generate(_BOUNDARY_LENGTH - prefix.length,
163 (index) => 163 (index) =>
164 _BOUNDARY_CHARACTERS[_random.nextInt(_BOUNDARY_CHARACTERS.length)], 164 _BOUNDARY_CHARACTERS[_random.nextInt(_BOUNDARY_CHARACTERS.length)],
165 growable: false); 165 growable: false);
166 return "$prefix${new String.fromCharCodes(list)}"; 166 return "$prefix${new String.fromCharCodes(list)}";
167 } 167 }
168 } 168 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698