import 'dart:convert'; import 'dart:io'; import 'package:http/http.dart' as http; import 'package:mhunt_launcher/Backend/Structures.dart'; import 'package:path_provider/path_provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'DebugHelper.dart'; class Backend{ static const String API_ENDPOINT = "https://vps.playpoolstudios.com/metahunt/api/launcher/"; static List Games = [ GameData(0,"mhunt","Metahunt", "High-Stake Battle Royale game with Play to earn abilities", "images/mhunt_thumbnail.png", true,"METAHUNT.exe"), GameData(1,"pop3d","Pop3D", "a game I dont know much about xD", "images/pop3d_thumbnail.png", false, "pop3d.exe"), ]; static SharedPreferences? prefs; static Directory? docPath; static String Username=""; static Map UserJson = {'username':'test', 'passwd':'test123'}; static Future Login(String username, String password) async{ var loginResponse = null; init(); try { loginResponse = (await http.post(Uri.parse('${API_ENDPOINT}login.php'), body: {"username": username, "password": password})); Debug.LogResponse(loginResponse.body.toString(),src: '${API_ENDPOINT}login.php'); try { Username=username; SetUsernamePassword(username, password); return true; } catch (e) { } } catch (e) { Debug.LogError("Error while login $e"); } return false; } static void init()async{ prefs = await SharedPreferences.getInstance(); docPath = await getDownloadsDirectory(); } static Future Register(String username, String password, String displayname) async{ var loginResponse = null; init(); try { loginResponse = (await http.post(Uri.parse('${API_ENDPOINT}register.php'), body: {"username": username, "password": password, "display_name": displayname})); Debug.LogResponse(loginResponse.body.toString(),src: '${API_ENDPOINT}register.php'); try { SetUsernamePassword(username, password); return true; } catch (e) { } } catch (e) { Debug.LogError("Error while login $e"); } return false; } static void SetUsernamePassword(String username, String passwd){ UserJson = {'username':username, 'passwd':passwd}; } static Future> GetLeaderboard(String gameCode) async{ String url = '${API_ENDPOINT}/${gameCode}/get_leaderboard.php'; var leaderboardResponse = await http.get(Uri.parse(url)); return LeaderboardEntry.listFromJson(leaderboardResponse.body); } static Future>> GetNewsForGame(int gameId)async{ String url = '${API_ENDPOINT}${Games[gameId].code}/get_news.php'; try{ var res = await http.get(Uri.parse(url)); List jsonList = jsonDecode(res.body); List> output = []; jsonList.forEach((element) { output.add(element as Map); }); return output; }catch(e){ Debug.LogError(e); } return [{}]; } static Future> GetUserStatsForGame(int gameId) async{ var loginResponse = null; init(); try { String url = '${API_ENDPOINT}${Games[gameId].code}/get_user_stats.php'; loginResponse = (await http.post(Uri.parse(url), body: {"username": prefs!.getString("username") ?? "test"})); Debug.LogResponse(loginResponse.body.toString(),src: url); return jsonDecode(loginResponse.body); } catch (e) { Debug.LogError("Error while login $e"); } return {}; } static Future CreateRequest() async{ var loginResponse = null; try { String url = '${API_ENDPOINT}create_request.php'; loginResponse = await http.get(Uri.parse(url)); Debug.LogResponse(loginResponse.body.toString(),src: url); return loginResponse.body.toString(); } catch (e) { Debug.LogError("Error while login $e"); } return "-1"; } static Future GetRequestResponse(String id) async{ var loginResponse = null; try { String url = '${API_ENDPOINT}get_request_response.php'; loginResponse = (await http.post(Uri.parse(url), body: {"id":id.toString()})); Debug.LogResponse(loginResponse.body.toString(),src: url); return loginResponse.body; } catch (e) { Debug.LogError("Error while login $e"); } return "-1"; } static Future GetDisplayName(String id) async{ var response = null; try { String url = '${API_ENDPOINT}get_display_name.php'; response = (await http.post(Uri.parse(url), body: {"id":id.toString()})); Debug.LogResponse(response.body.toString(),src: url); return response.body; } catch (e) { Debug.LogError("Error while login $e"); } return "-1"; } static Future GetUsernameValidation(String username) async{ var loginResponse = null; try { String url = '${API_ENDPOINT}validate_username.php'; loginResponse = (await http.post(Uri.parse(url), body: {"username":username})); Debug.LogResponse(loginResponse.body.toString(),src: url); if(loginResponse.body == "0"){ return true; }else{ return false; } } catch (e) { Debug.LogError("Error while login $e"); } return false; } } class GameData{ int id; String code; String name; String description; String imagePath; bool isAvailable; String exeName; GameData(this.id,this.code,this.name,this.description,this.imagePath,this.isAvailable,this.exeName); }