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

Side by Side Diff: sdk/lib/io/http_utils.dart

Issue 12282038: Remove deprecated string features. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 10 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 part of dart.io; 5 part of dart.io;
6 6
7 class _HttpUtils { 7 class _HttpUtils {
8 static String decodeUrlEncodedString(String urlEncoded) { 8 static String decodeUrlEncodedString(String urlEncoded) {
9 // First check the string for any encoding. 9 // First check the string for any encoding.
10 int index = 0; 10 int index = 0;
11 bool encoded = false; 11 bool encoded = false;
12 while (!encoded && index < urlEncoded.length) { 12 while (!encoded && index < urlEncoded.length) {
13 encoded = urlEncoded[index] == "+" || urlEncoded[index] == "%"; 13 encoded = urlEncoded[index] == "+" || urlEncoded[index] == "%";
14 index++; 14 index++;
15 } 15 }
16 if (!encoded) return urlEncoded; 16 if (!encoded) return urlEncoded;
17 index--; 17 index--;
18 18
19 // Start decoding from the first encoded character. 19 // Start decoding from the first encoded character.
20 List<int> bytes = new List<int>(); 20 List<int> bytes = new List<int>();
21 for (int i = 0; i < index; i++) bytes.add(urlEncoded.charCodeAt(i)); 21 for (int i = 0; i < index; i++) bytes.add(urlEncoded.codeUnitAt(i));
22 for (int i = index; i < urlEncoded.length; i++) { 22 for (int i = index; i < urlEncoded.length; i++) {
23 if (urlEncoded[i] == "+") { 23 if (urlEncoded[i] == "+") {
24 bytes.add(32); 24 bytes.add(32);
25 } else if (urlEncoded[i] == "%") { 25 } else if (urlEncoded[i] == "%") {
26 if (urlEncoded.length - i < 2) { 26 if (urlEncoded.length - i < 2) {
27 throw new HttpException("Invalid URL encoding"); 27 throw new HttpException("Invalid URL encoding");
28 } 28 }
29 int byte = 0; 29 int byte = 0;
30 for (int j = 0; j < 2; j++) { 30 for (int j = 0; j < 2; j++) {
31 var charCode = urlEncoded.charCodeAt(i + j + 1); 31 var charCode = urlEncoded.codeUnitAt(i + j + 1);
32 if (0x30 <= charCode && charCode <= 0x39) { 32 if (0x30 <= charCode && charCode <= 0x39) {
33 byte = byte * 16 + charCode - 0x30; 33 byte = byte * 16 + charCode - 0x30;
34 } else { 34 } else {
35 // Check ranges A-F (0x41-0x46) and a-f (0x61-0x66). 35 // Check ranges A-F (0x41-0x46) and a-f (0x61-0x66).
36 charCode |= 0x20; 36 charCode |= 0x20;
37 if (0x61 <= charCode && charCode <= 0x66) { 37 if (0x61 <= charCode && charCode <= 0x66) {
38 byte = byte * 16 + charCode - 0x57; 38 byte = byte * 16 + charCode - 0x57;
39 } else { 39 } else {
40 throw new ArgumentError("Invalid URL encoding"); 40 throw new ArgumentError("Invalid URL encoding");
41 } 41 }
42 } 42 }
43 } 43 }
44 bytes.add(byte); 44 bytes.add(byte);
45 i += 2; 45 i += 2;
46 } else { 46 } else {
47 bytes.add(urlEncoded.charCodeAt(i)); 47 bytes.add(urlEncoded.codeUnitAt(i));
48 } 48 }
49 } 49 }
50 return decodeUtf8(bytes); 50 return decodeUtf8(bytes);
51 } 51 }
52 52
53 static Map<String, String> splitQueryString(String queryString) { 53 static Map<String, String> splitQueryString(String queryString) {
54 Map<String, String> result = new Map<String, String>(); 54 Map<String, String> result = new Map<String, String>();
55 int currentPosition = 0; 55 int currentPosition = 0;
56 while (currentPosition < queryString.length) { 56 while (currentPosition < queryString.length) {
57 int position = queryString.indexOf("=", currentPosition); 57 int position = queryString.indexOf("=", currentPosition);
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 222
223 int weekday = expectWeekday(); 223 int weekday = expectWeekday();
224 int day; 224 int day;
225 int month; 225 int month;
226 int year; 226 int year;
227 int hours; 227 int hours;
228 int minutes; 228 int minutes;
229 int seconds; 229 int seconds;
230 if (format == formatAsctime) { 230 if (format == formatAsctime) {
231 month = expectMonth(" "); 231 month = expectMonth(" ");
232 if (date.charCodeAt(index) == SP) index++; 232 if (date.codeUnitAt(index) == SP) index++;
233 day = expectNum(" "); 233 day = expectNum(" ");
234 hours = expectNum(":"); 234 hours = expectNum(":");
235 minutes = expectNum(":"); 235 minutes = expectNum(":");
236 seconds = expectNum(" "); 236 seconds = expectNum(" ");
237 year = expectNum(""); 237 year = expectNum("");
238 } else { 238 } else {
239 expect(" "); 239 expect(" ");
240 day = expectNum(format == formatRfc1123 ? " " : "-"); 240 day = expectNum(format == formatRfc1123 ? " " : "-");
241 month = expectMonth(format == formatRfc1123 ? " " : "-"); 241 month = expectMonth(format == formatRfc1123 ? " " : "-");
242 year = expectNum(" "); 242 year = expectNum(" ");
(...skipping 15 matching lines...) Expand all
258 258
259 void error() { 259 void error() {
260 throw new HttpException("Invalid cookie date $date"); 260 throw new HttpException("Invalid cookie date $date");
261 } 261 }
262 262
263 bool isEnd() { 263 bool isEnd() {
264 return position == date.length; 264 return position == date.length;
265 } 265 }
266 266
267 bool isDelimiter(String s) { 267 bool isDelimiter(String s) {
268 int char = s.charCodeAt(0); 268 int char = s.codeUnitAt(0);
269 if (char == 0x09) return true; 269 if (char == 0x09) return true;
270 if (char >= 0x20 && char <= 0x2F) return true; 270 if (char >= 0x20 && char <= 0x2F) return true;
271 if (char >= 0x3B && char <= 0x40) return true; 271 if (char >= 0x3B && char <= 0x40) return true;
272 if (char >= 0x5B && char <= 0x60) return true; 272 if (char >= 0x5B && char <= 0x60) return true;
273 if (char >= 0x7B && char <= 0x7E) return true; 273 if (char >= 0x7B && char <= 0x7E) return true;
274 return false; 274 return false;
275 } 275 }
276 276
277 bool isNonDelimiter(String s) { 277 bool isNonDelimiter(String s) {
278 int char = s.charCodeAt(0); 278 int char = s.codeUnitAt(0);
279 if (char >= 0x00 && char <= 0x08) return true; 279 if (char >= 0x00 && char <= 0x08) return true;
280 if (char >= 0x0A && char <= 0x1F) return true; 280 if (char >= 0x0A && char <= 0x1F) return true;
281 if (char >= 0x30 && char <= 0x39) return true; // Digit 281 if (char >= 0x30 && char <= 0x39) return true; // Digit
282 if (char == 0x3A) return true; // ':' 282 if (char == 0x3A) return true; // ':'
283 if (char >= 0x41 && char <= 0x5A) return true; // Alpha 283 if (char >= 0x41 && char <= 0x5A) return true; // Alpha
284 if (char >= 0x61 && char <= 0x7A) return true; // Alpha 284 if (char >= 0x61 && char <= 0x7A) return true; // Alpha
285 if (char >= 0x7F && char <= 0xFF) return true; // Alpha 285 if (char >= 0x7F && char <= 0xFF) return true; // Alpha
286 return false; 286 return false;
287 } 287 }
288 288
289 bool isDigit(String s) { 289 bool isDigit(String s) {
290 int char = s.charCodeAt(0); 290 int char = s.codeUnitAt(0);
291 if (char > 0x2F && char < 0x3A) return true; 291 if (char > 0x2F && char < 0x3A) return true;
292 return false; 292 return false;
293 } 293 }
294 294
295 int getMonth(String month) { 295 int getMonth(String month) {
296 if (month.length < 3) return -1; 296 if (month.length < 3) return -1;
297 return monthsLowerCase.indexOf(month.substring(0, 3)); 297 return monthsLowerCase.indexOf(month.substring(0, 3));
298 } 298 }
299 299
300 int toInt(String s) { 300 int toInt(String s) {
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 int hour = toInt(timeList[0]); 352 int hour = toInt(timeList[0]);
353 int minute = toInt(timeList[1]); 353 int minute = toInt(timeList[1]);
354 int second = toInt(timeList[2]); 354 int second = toInt(timeList[2]);
355 if (hour > 23) error(); 355 if (hour > 23) error();
356 if (minute > 59) error(); 356 if (minute > 59) error();
357 if (second > 59) error(); 357 if (second > 59) error();
358 358
359 return new DateTime.utc(year, month, dayOfMonth, hour, minute, second, 0); 359 return new DateTime.utc(year, month, dayOfMonth, hour, minute, second, 0);
360 } 360 }
361 } 361 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698