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

Side by Side Diff: lib/src/server/assets.dart

Issue 710093005: appengine: throw AssetErrors directly (instead of via new Future.error (Closed) Base URL: https://github.com/dart-lang/appengine.git@master
Patch Set: nits Created 6 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
« no previous file with comments | « codereview.settings ('k') | no next file » | 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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 appengine.assets; 5 library appengine.assets;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 9
10 import 'package:http_server/http_server.dart' show VirtualDirectory; 10 import 'package:http_server/http_server.dart' show VirtualDirectory;
(...skipping 29 matching lines...) Expand all
40 proxyResponse.headers.forEach((name, values) { 40 proxyResponse.headers.forEach((name, values) {
41 if (RESPONSE_HEADERS.contains(name)) { 41 if (RESPONSE_HEADERS.contains(name)) {
42 request.response.headers.set(name, values); 42 request.response.headers.set(name, values);
43 } 43 }
44 }); 44 });
45 request.response.statusCode = proxyResponse.statusCode; 45 request.response.statusCode = proxyResponse.statusCode;
46 request.response.reasonPhrase = proxyResponse.reasonPhrase; 46 request.response.reasonPhrase = proxyResponse.reasonPhrase;
47 return proxyResponse.pipe(request.response); 47 return proxyResponse.pipe(request.response);
48 }) 48 })
49 .catchError((e) { 49 .catchError((e) {
50 // TODO(kevmoo) Use logging here
50 print("Unable to connect to 'pub serve' for '${request.uri}': $e"); 51 print("Unable to connect to 'pub serve' for '${request.uri}': $e");
51 var error = new AssetError( 52 throw new AssetError(
52 "Unable to connect to 'pub serve' for '${request.uri}': $e"); 53 "Unable to connect to 'pub serve' for '${request.uri}': $e");
53 return new Future.error(error);
54 }); 54 });
55 } 55 }
56 56
57 Future _serveFromFile(HttpRequest request, String path) { 57 Future _serveFromFile(HttpRequest request, String path) {
58 // Check if the request path is pointing to a static resource. 58 // Check if the request path is pointing to a static resource.
59 path = normalize(path); 59 path = normalize(path);
60 return FileSystemEntity.isFile(root + path).then((exists) { 60 return FileSystemEntity.isFile(root + path).then((exists) {
61 if (exists) { 61 if (exists) {
62 return vd.serveFile(new File(root + path), request); 62 return vd.serveFile(new File(root + path), request);
63 } else { 63 } else {
64 return _serve404(request); 64 return _serve404(request);
65 } 65 }
66 }); 66 });
67 } 67 }
68 68
69 Future<Stream<List<int>>> _readFromPub(String path) { 69 Future<Stream<List<int>>> _readFromPub(String path) {
70 var uri = pubServeUrl.resolve(path); 70 var uri = pubServeUrl.resolve(path);
71 return client.openUrl('GET', uri) 71 return client.openUrl('GET', uri)
72 .then((request) => request.close()) 72 .then((request) => request.close())
73 .then((response) { 73 .then((response) {
74 if (response.statusCode == HttpStatus.OK) { 74 if (response.statusCode == HttpStatus.OK) {
75 return response; 75 return response;
76 } else { 76 } else {
77 var error = new AssetError( 77 throw new AssetError(
78 "Failed to fetch asset '$path' from pub: " 78 "Failed to fetch asset '$path' from pub: "
79 "${response.statusCode}."); 79 "${response.statusCode}.");
80 return new Future.error(error);
81 } 80 }
82 }) 81 })
83 .catchError((error) { 82 .catchError((error) {
84 if (error is! AssetError) { 83 if (error is! AssetError) {
85 error = new AssetError( 84 error = new AssetError(
86 "Failed to fetch asset '$path' from pub: '${path}': $error"); 85 "Failed to fetch asset '$path' from pub: '${path}': $error");
87 } 86 }
88 return new Future.error(error); 87 throw error;
89 }); 88 });
90 } 89 }
91 90
92 Future<Stream<List<int>>> _readFromFile(String path) { 91 Future<Stream<List<int>>> _readFromFile(String path) {
93 path = normalize(path); 92 path = normalize(path);
94 return FileSystemEntity.isFile(root + path).then((exists) { 93 return FileSystemEntity.isFile(root + path).then((exists) {
95 if (exists) { 94 if (exists) {
96 return new File(root + path).openRead(); 95 return new File(root + path).openRead();
97 } else { 96 } else {
98 var error = new AssetError("Asset '$path' not found"); 97 throw new AssetError("Asset '$path' not found");
99 return new Future.error(error);
100 } 98 }
101 }); 99 });
102 } 100 }
103 101
104 Future _serve404(HttpRequest request) { 102 Future _serve404(HttpRequest request) {
105 // Serve 404. 103 // Serve 404.
106 return request.drain().then((_) { 104 return request.drain().then((_) {
107 return request.response 105 return request.response
108 ..statusCode = HttpStatus.NOT_FOUND 106 ..statusCode = HttpStatus.NOT_FOUND
109 ..close(); 107 ..close();
(...skipping 26 matching lines...) Expand all
136 Future<Stream<List<int>>> read([String path]) { 134 Future<Stream<List<int>>> read([String path]) {
137 return appengineContext.assets.read( 135 return appengineContext.assets.read(
138 path == null ? request.uri.path : path); 136 path == null ? request.uri.path : path);
139 } 137 }
140 138
141 void serve([String path]) { 139 void serve([String path]) {
142 appengineContext.assets.serve(request, 140 appengineContext.assets.serve(request,
143 path == null ? request.uri.path : path); 141 path == null ? request.uri.path : path);
144 } 142 }
145 } 143 }
OLDNEW
« no previous file with comments | « codereview.settings ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698