import 'package:barcode_scanner/backend/schema/auth/auth_model.dart'; import 'package:barcode_scanner/provider_container.dart'; import 'package:barcode_scanner/services/dio_service.dart'; import 'package:barcode_scanner/services/token_provider.dart'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; import 'package:multiple_result/multiple_result.dart'; class ApiCalls { static DioService dioService = DioService( tokenProvider: providerContainer.read(tokenProvider), ); static Future?> fetchProduct(String barcode) async { final Dio dio = Dio( BaseOptions(baseUrl: 'https://world.openfoodfacts.org'), ); try { final response = await dio.get('/api/v0/product/$barcode.json'); if (response.statusCode == 200) { final data = response.data; if (data['status'] == 1) { return data['product']; } else { debugPrint('Produit non trouvé'); return null; } } else { debugPrint('Erreur réseau: ${response.statusCode}'); return null; } } catch (e) { debugPrint('Erreur lors de la requête: $e'); return null; } } static Future> signIn({ required String email, required String password, }) async { try { final response = await dioService.post( path: '/sign_in', data: { "params": { "login": email, "password": password, "db": "bitnami_odoo", }, }, ); if (response.statusCode == 200) { final data = response.data; if (data['result']['success'] == true) { return Result.success(AuthModel.fromJson(data['result']['data'])); } else { return Result.error(Error(data['result']['success'])); } } else { debugPrint('Erreur réseau: ${response.statusCode}'); return Result.error(Error(response.statusMessage)); } } catch (e) { debugPrint('Erreur lors de la requête: $e'); return Result.error(Error(e)); } } }