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

Side by Side Diff: tools/testing/dart/http_server.dart

Issue 14251006: Remove AsyncError with Expando. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments. Created 7 years, 8 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
« no previous file with comments | « tools/testing/dart/drt_updater.dart ('k') | tools/testing/dart/test_runner.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) 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 http_server; 5 library http_server;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 import 'dart:isolate'; 9 import 'dart:isolate';
10 import 'dart:uri'; 10 import 'dart:uri';
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 if (request.uri.path == "/echo") { 135 if (request.uri.path == "/echo") {
136 _handleEchoRequest(request, request.response); 136 _handleEchoRequest(request, request.response);
137 } else if (request.uri.path == '/ws') { 137 } else if (request.uri.path == '/ws') {
138 _handleWebSocketRequest(request); 138 _handleWebSocketRequest(request);
139 } else { 139 } else {
140 _handleFileOrDirectoryRequest( 140 _handleFileOrDirectoryRequest(
141 request, request.response, allowedPort); 141 request, request.response, allowedPort);
142 } 142 }
143 }, 143 },
144 onError: (e) { 144 onError: (e) {
145 DebugLogger.error('HttpServer: an error occured: $e'); 145 DebugLogger.error('HttpServer: an error occured', e);
146 }); 146 });
147 _serverList.add(httpServer); 147 _serverList.add(httpServer);
148 }); 148 });
149 } 149 }
150 150
151 void _handleFileOrDirectoryRequest(HttpRequest request, 151 void _handleFileOrDirectoryRequest(HttpRequest request,
152 HttpResponse response, 152 HttpResponse response,
153 int allowedPort) { 153 int allowedPort) {
154 var path = _getFilePathFromRequestPath(request.uri.path); 154 var path = _getFilePathFromRequestPath(request.uri.path);
155 if (path != null) { 155 if (path != null) {
(...skipping 23 matching lines...) Expand all
179 } else { 179 } else {
180 _sendNotFound(request, response); 180 _sendNotFound(request, response);
181 } 181 }
182 } 182 }
183 } 183 }
184 184
185 void _handleEchoRequest(HttpRequest request, HttpResponse response) { 185 void _handleEchoRequest(HttpRequest request, HttpResponse response) {
186 response.headers.set("Access-Control-Allow-Origin", "*"); 186 response.headers.set("Access-Control-Allow-Origin", "*");
187 request.pipe(response).catchError((e) { 187 request.pipe(response).catchError((e) {
188 DebugLogger.warning( 188 DebugLogger.warning(
189 'HttpServer: error while closing the response stream: $e'); 189 'HttpServer: error while closing the response stream', e);
190 }); 190 });
191 } 191 }
192 192
193 void _handleWebSocketRequest(HttpRequest request) { 193 void _handleWebSocketRequest(HttpRequest request) {
194 WebSocketTransformer.upgrade(request).then((websocket) { 194 WebSocketTransformer.upgrade(request).then((websocket) {
195 websocket.listen((data) { 195 websocket.listen((data) {
196 websocket.send(data); 196 websocket.send(data);
197 websocket.close(); 197 websocket.close();
198 }, onError: (e) { 198 }, onError: (e) {
199 DebugLogger.warning( 199 DebugLogger.warning('HttpServer: error while echoing to WebSocket', e);
200 'HttpServer: error while echoing to WebSocket: $e');
201 }); 200 });
202 }).catchError((e) { 201 }).catchError((e) {
203 DebugLogger.warning( 202 DebugLogger.warning(
204 'HttpServer: error while transforming to WebSocket: $e'); 203 'HttpServer: error while transforming to WebSocket', e);
205 }); 204 });
206 } 205 }
207 206
208 Path _getFilePathFromRequestPath(String urlRequestPath) { 207 Path _getFilePathFromRequestPath(String urlRequestPath) {
209 // Go to the top of the file to see an explanation of the URL path scheme. 208 // Go to the top of the file to see an explanation of the URL path scheme.
210 var requestPath = new Path(urlRequestPath.substring(1)).canonicalize(); 209 var requestPath = new Path(urlRequestPath.substring(1)).canonicalize();
211 var pathSegments = requestPath.segments(); 210 var pathSegments = requestPath.segments();
212 if (pathSegments.length > 0) { 211 if (pathSegments.length > 0) {
213 var basePath; 212 var basePath;
214 var relativePath; 213 var relativePath;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 response.write(header); 278 response.write(header);
280 for (var entry in entries) { 279 for (var entry in entries) {
281 response.write( 280 response.write(
282 '<li><a href="${new Path(request.uri.path).append(entry.name)}">' 281 '<li><a href="${new Path(request.uri.path).append(entry.name)}">'
283 '${entry.displayName}</a></li>'); 282 '${entry.displayName}</a></li>');
284 } 283 }
285 response.write(footer); 284 response.write(footer);
286 response.close(); 285 response.close();
287 response.done.catchError((e) { 286 response.done.catchError((e) {
288 DebugLogger.warning( 287 DebugLogger.warning(
289 'HttpServer: error while closing the response stream: $e'); 288 'HttpServer: error while closing the response stream', e);
290 }); 289 });
291 } 290 }
292 291
293 void _sendFileContent(HttpRequest request, 292 void _sendFileContent(HttpRequest request,
294 HttpResponse response, 293 HttpResponse response,
295 int allowedPort, 294 int allowedPort,
296 Path path, 295 Path path,
297 File file) { 296 File file) {
298 if (allowedPort != -1) { 297 if (allowedPort != -1) {
299 var headerOrigin = request.headers.value('Origin'); 298 var headerOrigin = request.headers.value('Origin');
(...skipping 29 matching lines...) Expand all
329 } 328 }
330 if (path.filename.endsWith('.html')) { 329 if (path.filename.endsWith('.html')) {
331 response.headers.set('Content-Type', 'text/html'); 330 response.headers.set('Content-Type', 'text/html');
332 } else if (path.filename.endsWith('.js')) { 331 } else if (path.filename.endsWith('.js')) {
333 response.headers.set('Content-Type', 'application/javascript'); 332 response.headers.set('Content-Type', 'application/javascript');
334 } else if (path.filename.endsWith('.dart')) { 333 } else if (path.filename.endsWith('.dart')) {
335 response.headers.set('Content-Type', 'application/dart'); 334 response.headers.set('Content-Type', 'application/dart');
336 } 335 }
337 file.openRead().pipe(response).catchError((e) { 336 file.openRead().pipe(response).catchError((e) {
338 DebugLogger.warning( 337 DebugLogger.warning(
339 'HttpServer: error while closing the response stream: $e'); 338 'HttpServer: error while closing the response stream', e);
340 }); 339 });
341 } 340 }
342 341
343 void _sendNotFound(HttpRequest request, HttpResponse response) { 342 void _sendNotFound(HttpRequest request, HttpResponse response) {
344 // NOTE: Since some tests deliberately try to access non-existent files. 343 // NOTE: Since some tests deliberately try to access non-existent files.
345 // We might want to remove this warning (otherwise it will show 344 // We might want to remove this warning (otherwise it will show
346 // up in the debug.log every time). 345 // up in the debug.log every time).
347 if (request.uri.path != "/favicon.ico") { 346 if (request.uri.path != "/favicon.ico") {
348 DebugLogger.warning('HttpServer: could not find file for request path: ' 347 DebugLogger.warning('HttpServer: could not find file for request path: '
349 '"${request.uri.path}"'); 348 '"${request.uri.path}"');
350 } 349 }
351 response.statusCode = HttpStatus.NOT_FOUND; 350 response.statusCode = HttpStatus.NOT_FOUND;
352 response.close(); 351 response.close();
353 response.done.catchError((e) { 352 response.done.catchError((e) {
354 DebugLogger.warning( 353 DebugLogger.warning(
355 'HttpServer: error while closing the response stream: $e'); 354 'HttpServer: error while closing the response stream', e);
356 }); 355 });
357 } 356 }
358 } 357 }
359 358
360 // Helper class for displaying directory listings. 359 // Helper class for displaying directory listings.
361 class _Entry { 360 class _Entry {
362 final String name; 361 final String name;
363 final String displayName; 362 final String displayName;
364 363
365 _Entry(this.name, this.displayName); 364 _Entry(this.name, this.displayName);
366 365
367 int compareTo(_Entry other) { 366 int compareTo(_Entry other) {
368 return name.compareTo(other.name); 367 return name.compareTo(other.name);
369 } 368 }
370 } 369 }
OLDNEW
« no previous file with comments | « tools/testing/dart/drt_updater.dart ('k') | tools/testing/dart/test_runner.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698