import 'package:dio/dio.dart'; import 'package:leonteva_pmu/data/dtos/recipes_dto.dart'; import 'package:leonteva_pmu/data/mappers/recipes_mapper.dart'; import 'package:leonteva_pmu/data/repositories/api_interface.dart'; import 'package:leonteva_pmu/domain/models/card.dart'; import 'package:pretty_dio_logger/pretty_dio_logger.dart'; class RecipeRepository extends ApiInterface { static final Dio _dio = Dio() ..interceptors.add(PrettyDioLogger( requestHeader: true, requestBody: true, responseHeader: true, responseBody: true, error: true, )); static const String _baseUrl = 'https://api.edamam.com'; static const String _appId = ''; // Укажите ваш APP_ID. static const String _appKey = '<988fcbbd552b83ca870efced716389e4>'; // Укажите ваш APP_KEY. @override Future?> loadData({String? q, OnErrorCallback? onError}) async { try { final String url = '$_baseUrl/search'; final Response response = await _dio.get( url, queryParameters: { 'q': q ?? '', // Параметр запроса для поиска рецептов. 'd683b7dc': _appId, '988fcbbd552b83ca870efced716389e4': _appKey, }, ); final RecipesDto dto = RecipesDto.fromJson(response.data as Map); final List? data = dto.hits?.map((e) => e.toDomain()).toList(); // Преобразуем DTO в модель. return data; } on DioException catch (e) { // Обработка ошибки и передача сообщения через onError. onError?.call(e.response?.statusMessage ?? 'Unknown error'); return null; } } }