import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; import 'package:pretty_dio_logger/pretty_dio_logger.dart'; final ApiService apiService = ApiService(); class ApiService { final baseUrl = 'https://lba-api.liara.run'; late Dio _dio; void setAuthToken(String token) { _dio.options.headers['Authorization'] = 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJheC1zX3N3Tm5fU1hDTVkzWFowSDVKekNhQ0psVXh6bmZ0WHBxSk1YUEF3In0.eyJleHAiOjE3Mzk4ODcwNzksImlhdCI6MTczOTg4NTI3OSwianRpIjoiYTlmZGE4NzItZmJhZC00ZmQ5LTg3MTMtMTcwYjM3MWE1NTM2IiwiaXNzIjoiaHR0cHM6Ly9rZXljbG9hay5saWFyYS5ydW4vcmVhbG1zL2xiYSIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiJmMzljODIxNi0zODhhLTQ0ZTEtODVhOC00Zjk5NmU2NmU2MDQiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJmcm9udGVuZCIsInNpZCI6IjIwNWNmNTBkLTE5MWUtNGViMS1iODBkLTMzMTFiNjIzYTZhMiIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cHM6Ly9sYmEtYXBpLmxpYXJhLnJ1bi8qIiwiaHR0cDovL2xvY2FsaG9zdDozMDAwLyoiLCIvKiJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsiZGVmYXVsdC1yb2xlcy1sYmEiLCJvZmZsaW5lX2FjY2VzcyIsInVtYV9hdXRob3JpemF0aW9uIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19LCJmcm9udGVuZCI6eyJyb2xlcyI6WyJzaG9wIiwidXNlciJdfX0sInNjb3BlIjoib3BlbmlkIGVtYWlsIHByb2ZpbGUiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6ImRlbW8gZGVtbyIsInByZWZlcnJlZF91c2VybmFtZSI6ImRlbW8iLCJnaXZlbl9uYW1lIjoiZGVtbyIsImZhbWlseV9uYW1lIjoiZGVtbyIsImVtYWlsIjoiZGVtb0BnbWFpbC5jb20ifQ.r_RtuJLZ9HQZdoy1Fi29d7hbXqcQ497XThKUmAjd_ClenE2VjpTzpogTOFwrrzJqRxm9fDpBflliqBWRg7KwR7irxW4HHBBaJmCaLzLbG8EtiuvciwDc9ugqLwUvGs2Gnzc7P0RA9aWzVY2lBkDZa7GeEvCCI4k0pbSWsAjX-Ax2vHxCqW8GzMsBeLkQ2BE9cyKX5Q3f-yne5HjDoxF1350qPlXwxIRkmM2Ct-aiMm7CjCaawPdTqdritsWejwTtaVCQtzkHPyeToPwE_X1YLWDlFdwpWSzjiI2fDFyV-MykLgDZevxHtvFoIg-2f6Zsm2_t7AMoCr-tM7vquCZTaw'; } ApiService() { _dio = Dio( BaseOptions( baseUrl: baseUrl, // 🔹 Set your API base URL connectTimeout: const Duration(seconds: 10), // Timeout settings receiveTimeout: const Duration(seconds: 10), headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', }, ), )..interceptors.add(PrettyDioLogger( enabled: kDebugMode, )); setAuthToken(''); } /// 🔹 Handle GET requests Future get(String endpoint, {Map? params}) async { try { Response response = await _dio.get(endpoint, queryParameters: params); return response.data; } catch (e) { _handleError(e); } } /// 🔹 Handle POST requests Future post(String endpoint, {dynamic data}) async { try { Response response = await _dio.post(endpoint, data: data); return response.data; } catch (e) { _handleError(e); } } /// 🔹 Handle PUT requests Future put(String endpoint, {dynamic data}) async { try { Response response = await _dio.put(endpoint, data: data); return response.data; } catch (e) { _handleError(e); } } /// 🔹 Handle DELETE requests Future delete(String endpoint, {dynamic data}) async { try { Response response = await _dio.delete(endpoint, data: data); return response.data; } catch (e) { _handleError(e); } } /// 🔹 Error handling void _handleError(dynamic error) { if (error is DioException) { switch (error.type) { case DioExceptionType.connectionTimeout: throw Exception("Connection timeout, please try again."); case DioExceptionType.receiveTimeout: throw Exception("Receive timeout, please try again."); case DioExceptionType.badResponse: throw Exception("Server error: ${error.response?.statusCode}"); case DioExceptionType.cancel: throw Exception("Request canceled."); default: throw Exception("Unexpected error occurred."); } } else { throw Exception("Unknown error: $error"); } } }