Files
cinema-display/server/cinema/lib/feature/poster/data/services/poster.service.dart
Peter Siegmund 4ce471599b load trending images from tmdb at startup
- need TMDB_API_KEY as environment variable
- mount /cache for data persistence

Signed-off-by: Peter Siegmund <developer@mars3142.org>
2025-11-17 23:21:01 +01:00

37 lines
1.0 KiB
Dart

import 'dart:convert';
import 'package:cinema/feature/poster/domain/poster_request.schema.dart';
import 'package:injectable/injectable.dart';
import 'package:shelf/shelf.dart';
import 'package:shelf_router/shelf_router.dart';
part 'poster.service.g.dart';
@injectable
class PosterService {
@Route.get('/')
Future<Response> getRoot(Request request) async {
return Response.ok('deprecated poster endpoint. use POST /poster instead');
}
@Route.post('/')
Future<Response> postRoot(Request request) async {
final payload = await request.readAsString();
final body = jsonDecode(payload);
final params = posterSchema.safeParse(body);
if (!params.success) {
return Response(
400,
body: jsonEncode({
'error': 'Invalid request',
'details': params.error?.messages,
}),
headers: {'Content-Type': 'application/json'},
);
}
return Response.ok(jsonEncode(params.data), headers: {'Content-Type': 'application/json'});
}
Router get router => _$PosterServiceRouter(this);
}