Index: app/bin/server.dart |
diff --git a/app/bin/server.dart b/app/bin/server.dart |
index e05448df1d68614e5ac203929c5cab2437466050..74e9ea2ce27a5caf46faa1e35aefac6f2a77dffa 100644 |
--- a/app/bin/server.dart |
+++ b/app/bin/server.dart |
@@ -29,52 +29,40 @@ void main() { |
useLoggingPackageAdaptor(); |
withAppEngineServices(() async { |
- return fork(() async { |
- DatastoreDB savedDb; |
- if (Platform.isMacOS) { |
- savedDb = await initializeApiaryDatastore(); |
- } |
+ return withCorrectDatastore((DatastoreDB savedDb) async { |
final shelf.Handler apiHandler = await setupServices(activeConfiguration); |
- var requestHandler = (HttpRequest ioRequest) async { |
- if (context.isProductionEnvironment && |
- ioRequest.requestedUri.scheme != 'https') { |
- final secureUri = ioRequest.requestedUri.replace(scheme: 'https'); |
- ioRequest.response |
- ..redirect(secureUri) |
- ..close(); |
- } else { |
- try { |
- return shelf_io.handleRequest(ioRequest, |
- (shelf.Request request) async { |
- logger.info('Handling request: ${request.requestedUri}'); |
- await registerLoggedInUserIfPossible(request); |
- try { |
- final sanitizedRequest = sanitizeRequestedUri(request); |
- return await appHandler(sanitizedRequest, apiHandler); |
- } catch (error, s) { |
- logger.severe('Request handler failed', error, s); |
- return new shelf.Response.internalServerError(); |
- } finally { |
- logger.info('Request handler done.'); |
- } |
- }); |
- } catch (error, stack) { |
- logger.severe('Request handler failed', error, stack); |
+ await runAppEngine((HttpRequest ioRequest) async { |
+ return withCorrectDatastore((_) { |
+ if (context.isProductionEnvironment && |
+ ioRequest.requestedUri.scheme != 'https') { |
+ final secureUri = ioRequest.requestedUri.replace(scheme: 'https'); |
+ ioRequest.response |
+ ..redirect(secureUri) |
+ ..close(); |
+ } else { |
+ try { |
+ return shelf_io.handleRequest(ioRequest, |
+ (shelf.Request request) async { |
+ logger.info('Handling request: ${request.requestedUri}'); |
+ await registerLoggedInUserIfPossible(request); |
+ try { |
+ final sanitizedRequest = sanitizeRequestedUri(request); |
+ return await appHandler(sanitizedRequest, apiHandler); |
+ } catch (error, s) { |
+ logger.severe('Request handler failed', error, s); |
+ return new shelf.Response.internalServerError(); |
+ } finally { |
+ logger.info('Request handler done.'); |
+ } |
+ }); |
+ } catch (error, stack) { |
+ logger.severe('Request handler failed', error, stack); |
+ } |
} |
- } |
- }; |
- if (Platform.isMacOS) { |
- final origHandler = requestHandler; |
- requestHandler = (ioRequest) { |
- fork(() async { |
- registerDbService(savedDb); |
- await origHandler(ioRequest); |
- }); |
- }; |
- } |
- await runAppEngine(requestHandler); |
- }); |
+ }, savedDb); |
+ }); |
+ }, null); |
}); |
} |