import 'dart:convert'; import 'dart:io'; import 'package:smartfit_app_mobile/Modele/Api/i_data_strategy.dart'; import 'package:http/http.dart' as http; import 'package:tuple/tuple.dart'; class RequestApi extends IDataStrategy { // Faire attention au URL String urlApi = "https://codefirst.iut.uca.fr/containers/SmartFit-smartfit_api"; @override Future> getFile(String token, String fileUuid) async { final response = await http.get(Uri.parse('$urlApi/user/files/$fileUuid'), headers: {'Authorization': token}); if (response.statusCode == 200) { /*return Classe.fromJson(jsonDecode(response.body) as Map);*/ throw UnimplementedError(); } else { throw UnimplementedError(); } } @override Future deleteFile(String token, String idFile) async { final response = await http.delete(Uri.parse('$urlApi/$token/files')); if (response.statusCode == 200) { /*return Classe.fromJson(jsonDecode(response.body) as Map);*/ throw UnimplementedError(); } else { throw UnimplementedError(); } } @override Future deleteUser(String token) async { final response = await http.delete(Uri.parse('$urlApi/user'), headers: {'Authorization': token}); if (response.statusCode == 200) { return const Tuple2(true, "Successful"); } else if (response.statusCode == 401) { return const Tuple2( false, "401 UNAUTHORIZED - Mauvais ou pas de token"); } else if (response.statusCode == 404) { return const Tuple2( false, "404 NOT FOUND - Pas de compte lié"); } return const Tuple2(false, "Fail"); } @override Future getFiles(String token) async { final response = await http.get(Uri.parse('$urlApi/$token/files')); if (response.statusCode == 200) { /*return Classe.fromJson(jsonDecode(response.body) as Map);*/ throw UnimplementedError(); } else { throw UnimplementedError(); } } @override Future connexion(String email, String hash) async { final response = await http.get(Uri.parse('$urlApi/user/login/$email/$hash')); if (response.statusCode == 200) { Map json = jsonDecode(response.body) as Map; return Tuple2(true, json['token']!); } else if (response.statusCode == 401) { return const Tuple2(false, "UNAUTHORIZED"); } return const Tuple2(false, "Fail"); } /* @override Future postUser(String email, String hash, String username) async { final response = await http.post(Uri.parse('$urlApi/user'), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: { "email": "'$email'", "hash": "'$hash'", "username": "'$username'" }); if (response.statusCode == 200) { return const Tuple2(true, "Successful"); } if (response.statusCode == 400) { return const Tuple2(false, "400 BAD REQUEST - Json mal formaté"); } if (response.statusCode == 409) { return const Tuple2( false, "409 CONFLICT - Déja un compte avec cet email"); } return const Tuple2(false, "Fail"); }*/ /* @override Future updateEmail(String token, String email) async { final response = await http.put(Uri.parse('$urlApi/$token/email'), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: jsonEncode({'email': email})); if (response.statusCode == 200) { return true; } else { return false; } } @override Future updateUsername(String token, String username) async { final response = await http.put(Uri.parse('$urlApi/$token/username'), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: jsonEncode({'username': username})); if (response.statusCode == 200) { return true; } else { return false; } }*/ @override Future modifAttribut( String token, String nameAttribut, String newValue) async { final response = await http.put(Uri.parse('$urlApi/user/$nameAttribut'), headers: { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': token }, body: jsonEncode({nameAttribut: newValue})); if (response.statusCode == 200) { return const Tuple2(true, "Successful"); } if (response.statusCode == 400) { return const Tuple2(false, "400 - BAD REQUEST"); } if (response.statusCode == 401) { return const Tuple2(false, "400 - UNAUTHORIZED"); } else { return const Tuple2(false, "Fail"); } } @override Future> uploadFile(String token, File file) async { final uri = Uri.parse('$urlApi/user/files'); Map headers = {'Authorization': token}; var request = http.MultipartRequest('POST', uri); final httpImage = http.MultipartFile.fromBytes( 'file_FIT', await file.readAsBytes(), filename: file.path.split('/').last); request.files.add(httpImage); request.headers.addAll(headers); final response = await request.send(); if (response.statusCode == 200) { return const Tuple2(true, "Successful"); } if (response.statusCode == 400) { return const Tuple2(false, "400 - BAD REQUEST"); } if (response.statusCode == 401) { return const Tuple2(false, "401 - UNAUTHORIZED"); } if (response.statusCode == 409) { return const Tuple2(false, "409 - CONFLICT"); } return const Tuple2(false, "Fail "); } @override Future postUser(String email, String hash, String username) { // TODO: implement postUser throw UnimplementedError(); } }