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

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

Issue 11361190: a === b -> identical(a, b) (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments. Created 8 years, 1 month 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
« no previous file with comments | « sdk/lib/io/http_impl.dart ('k') | sdk/lib/io/list_stream_impl.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 class _HttpUtils { 5 class _HttpUtils {
6 static String decodeUrlEncodedString(String urlEncoded) { 6 static String decodeUrlEncodedString(String urlEncoded) {
7 // First check the string for any encoding. 7 // First check the string for any encoding.
8 int index = 0; 8 int index = 0;
9 bool encoded = false; 9 bool encoded = false;
10 while (!encoded && index < urlEncoded.length) { 10 while (!encoded && index < urlEncoded.length) {
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 void error() { 255 void error() {
256 throw new HttpException("Invalid cookie date $date"); 256 throw new HttpException("Invalid cookie date $date");
257 } 257 }
258 258
259 bool isEnd() { 259 bool isEnd() {
260 return position == date.length; 260 return position == date.length;
261 } 261 }
262 262
263 bool isDelimiter(String s) { 263 bool isDelimiter(String s) {
264 int char = s.charCodeAt(0); 264 int char = s.charCodeAt(0);
265 if (char === 0x09) return true; 265 if (char == 0x09) return true;
266 if (char >= 0x20 && char <= 0x2F) return true; 266 if (char >= 0x20 && char <= 0x2F) return true;
267 if (char >= 0x3B && char <= 0x40) return true; 267 if (char >= 0x3B && char <= 0x40) return true;
268 if (char >= 0x5B && char <= 0x60) return true; 268 if (char >= 0x5B && char <= 0x60) return true;
269 if (char >= 0x7B && char <= 0x7E) return true; 269 if (char >= 0x7B && char <= 0x7E) return true;
270 return false; 270 return false;
271 } 271 }
272 272
273 bool isNonDelimiter(String s) { 273 bool isNonDelimiter(String s) {
274 int char = s.charCodeAt(0); 274 int char = s.charCodeAt(0);
275 if (char >= 0x00 && char <= 0x08) return true; 275 if (char >= 0x00 && char <= 0x08) return true;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 while (!isEnd() && isDelimiter(date[position])) position++; 308 while (!isEnd() && isDelimiter(date[position])) position++;
309 } 309 }
310 310
311 String timeStr; 311 String timeStr;
312 String dayOfMonthStr; 312 String dayOfMonthStr;
313 String monthStr; 313 String monthStr;
314 String yearStr; 314 String yearStr;
315 315
316 for (var token in tokens) { 316 for (var token in tokens) {
317 if (token.length < 1) continue; 317 if (token.length < 1) continue;
318 if (timeStr === null && token.length >= 5 && isDigit(token[0]) && 318 if (timeStr == null && token.length >= 5 && isDigit(token[0]) &&
319 (token[1] == ":" || (isDigit(token[1]) && token[2] == ":"))) { 319 (token[1] == ":" || (isDigit(token[1]) && token[2] == ":"))) {
320 timeStr = token; 320 timeStr = token;
321 } else if (dayOfMonthStr === null && isDigit(token[0])) { 321 } else if (dayOfMonthStr == null && isDigit(token[0])) {
322 dayOfMonthStr = token; 322 dayOfMonthStr = token;
323 } else if (monthStr === null && getMonth(token) >= 0) { 323 } else if (monthStr == null && getMonth(token) >= 0) {
324 monthStr = token; 324 monthStr = token;
325 } else if (yearStr === null && token.length >= 2 && 325 } else if (yearStr == null && token.length >= 2 &&
326 isDigit(token[0]) && isDigit(token[1])) { 326 isDigit(token[0]) && isDigit(token[1])) {
327 yearStr = token; 327 yearStr = token;
328 } 328 }
329 } 329 }
330 330
331 if (timeStr === null || dayOfMonthStr === null || 331 if (timeStr == null || dayOfMonthStr == null ||
332 monthStr === null || yearStr === null) { 332 monthStr == null || yearStr == null) {
333 error(); 333 error();
334 } 334 }
335 335
336 int year = toInt(yearStr); 336 int year = toInt(yearStr);
337 if (year >= 70 && year <= 99) year += 1900; 337 if (year >= 70 && year <= 99) year += 1900;
338 else if (year >= 0 && year <= 69) year += 2000; 338 else if (year >= 0 && year <= 69) year += 2000;
339 if (year < 1601) error(); 339 if (year < 1601) error();
340 340
341 int dayOfMonth = toInt(dayOfMonthStr); 341 int dayOfMonth = toInt(dayOfMonthStr);
342 if (dayOfMonth < 1 || dayOfMonth > 31) error(); 342 if (dayOfMonth < 1 || dayOfMonth > 31) error();
343 343
344 int month = getMonth(monthStr) + 1; 344 int month = getMonth(monthStr) + 1;
345 345
346 var timeList = timeStr.split(":"); 346 var timeList = timeStr.split(":");
347 if (timeList.length !== 3) error(); 347 if (timeList.length != 3) error();
348 int hour = toInt(timeList[0]); 348 int hour = toInt(timeList[0]);
349 int minute = toInt(timeList[1]); 349 int minute = toInt(timeList[1]);
350 int second = toInt(timeList[2]); 350 int second = toInt(timeList[2]);
351 if (hour > 23) error(); 351 if (hour > 23) error();
352 if (minute > 59) error(); 352 if (minute > 59) error();
353 if (second > 59) error(); 353 if (second > 59) error();
354 354
355 return new Date.utc(year, month, dayOfMonth, hour, minute, second, 0); 355 return new Date.utc(year, month, dayOfMonth, hour, minute, second, 0);
356 } 356 }
357 } 357 }
OLDNEW
« no previous file with comments | « sdk/lib/io/http_impl.dart ('k') | sdk/lib/io/list_stream_impl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698