Files
cinema-display/server/cinema/bin/server.dart
Peter Siegmund 4defe266eb
Some checks failed
Build and Push Multi-Arch Docker Image / build-and-push (push) Failing after 38s
latest server code
Signed-off-by: Peter Siegmund <developer@mars3142.org>
2025-11-28 21:02:02 +01:00

63 lines
2.1 KiB
Dart

import 'dart:async';
import 'dart:io';
import 'package:cinema/common/env_not_found_exception.dart';
import 'package:cinema/feature/middlewares/cors.dart';
import 'package:cinema/feature/poster/data/repositories/image_loader.dart';
import 'package:cinema/feature/poster/data/services/poster.service.dart';
import 'package:cinema/feature/root/data/service/root.service.dart';
import 'package:cinema/feature/version/version.dart';
import 'package:cinema/injectable.dart';
import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart' as io;
import 'package:shelf_router/shelf_router.dart';
void main(List<String> args) async {
runZonedGuarded(
() async {
final startTime = DateTime.now();
configureDependencies();
final router = Router();
router.mount("/poster", getIt<PosterService>().router.call);
router.mount("/", getIt<RootService>().router.call);
/// add middlewares (Logging, CORS)
final handler = Pipeline().addMiddleware(logRequests()).addMiddleware(cors()).addHandler(router.call);
// For running in containers, we respect the PORT environment variable.
final port = int.parse(Platform.environment['PORT'] ?? '3000');
await io.serve(handler, InternetAddress.anyIPv4, port, poweredByHeader: null).then((server) async {
final bannerFile = File('assets/banner.txt');
if (await bannerFile.exists()) {
final banner = await bannerFile.readAsString();
print(banner);
}
print('Caching current trending images...');
final ImageLoader loader = getIt();
final movies = await loader.getPosterURIs();
for (var movie in movies) {
await loader.downloadImages(movie);
}
getIt<Version>().printVersion();
print('Serving at ${server.address.host}:${server.port}\n');
final time = DateTime.now().difference(startTime);
print('Server started at: $startTime');
print('Startup time: $time\n');
});
},
(error, stackTrace) {
stderr.writeln(error);
if (error is EnvNotFoundException) {
exit(1);
}
},
);
}