import 'dart:convert'; import 'package:http/http.dart' as http; import '../models/movie.dart'; class ApiService { static const String apiKey = '70101da29bbd7fafb66f0ed06dd88794'; static const String accessToken = 'eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiI3MDEwMWRhMjliYmQ3ZmFmYjY2ZjBlZDA2ZGQ4ODc5NCIsIm5iZiI6MTc0NzgxNDY5MS44NDA5OTk4LCJzdWIiOiI2ODJkODkyMzYyOTliNjFlNzM2NDk2ODkiLCJzY29wZXMiOlsiYXBpX3JlYWQiXSwidmVyc2lvbiI6MX0.nGl7SvvrI6FlcQ7uOGJzrejN-_s7G0kdvnVCzSGGwm8'; static const String baseUrl = 'https://api.themoviedb.org/3'; static const String imageBaseUrl = 'https://image.tmdb.org/t/p/w500'; static Future> getPopularMovies() async { try { final response = await http.get( Uri.parse('$baseUrl/movie/popular?api_key=$apiKey'), headers: { 'Authorization': 'Bearer $accessToken', 'Content-Type': 'application/json', }, ); if (response.statusCode == 200) { final data = json.decode(response.body); final List movies = data['results']; return movies.map((movie) => Movie.fromJson(movie)).toList(); } else { throw Exception('Échec du chargement des films: ${response.statusCode}'); } } catch (e) { throw Exception('Erreur lors de la récupération des films: $e'); } } static Future> getTopRatedMovies() async { try { final response = await http.get( Uri.parse('$baseUrl/movie/top_rated?api_key=$apiKey'), headers: { 'Authorization': 'Bearer $accessToken', 'Content-Type': 'application/json', }, ); if (response.statusCode == 200) { final data = json.decode(response.body); final List movies = data['results']; return movies.map((movie) => Movie.fromJson(movie)).toList(); } else { throw Exception('Échec du chargement des films: ${response.statusCode}'); } } catch (e) { throw Exception('Erreur lors de la récupération des films: $e'); } } static Future> getNowPlayingMovies() async { try { final response = await http.get( Uri.parse('$baseUrl/movie/now_playing?api_key=$apiKey'), headers: { 'Authorization': 'Bearer $accessToken', 'Content-Type': 'application/json', }, ); if (response.statusCode == 200) { final data = json.decode(response.body); final List movies = data['results']; return movies.map((movie) => Movie.fromJson(movie)).toList(); } else { throw Exception('Échec du chargement des films: ${response.statusCode}'); } } catch (e) { throw Exception('Erreur lors de la récupération des films: $e'); } } static Future> getUpcomingMovies() async { try { final response = await http.get( Uri.parse('$baseUrl/movie/upcoming?api_key=$apiKey'), headers: { 'Authorization': 'Bearer $accessToken', 'Content-Type': 'application/json', }, ); if (response.statusCode == 200) { final data = json.decode(response.body); final List movies = data['results']; return movies.map((movie) => Movie.fromJson(movie)).toList(); } else { throw Exception('Échec du chargement des films: ${response.statusCode}'); } } catch (e) { throw Exception('Erreur lors de la récupération des films: $e'); } } }