import 'dart:convert'; import 'package:http/http.dart' as http; import '../config/constants/app_constant.dart'; import 'dart:developer' as dev; import 'package:wanisclient/config/api_response.dart'; import '../providers/utils_singleton.dart'; class PublicKeysService { Future>> fetchPublicKeys() async { try { final uri = Uri.https(baseUrl, '/api/v1/public/apikeyspublic'); final response = await http.get( uri, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }, ); if (response.statusCode == 200) { final String responseBody = utf8.decode(response.bodyBytes); final Map data = jsonDecode(responseBody); return APIResponse>( statusCode: response.statusCode, data: data, ); } else { return APIResponse>( statusCode: response.statusCode, errorMessage: 'Failed to load public keys (HTTP ${response.statusCode})', ); } } catch (e, st) { dev.log('fetchPublicKeys() error', error: e, stackTrace: st); return APIResponse>( errorMessage: e.toString(), ); } } Future>> fetchSecretKeys() async { try { final uri = Uri.https(baseUrl, '/api/apikeys'); final response = await http.get( uri, headers: { 'Authorization': 'Bearer ${utils.token}', 'Content-Type': 'application/json', 'Accept': 'application/json', }, ); if (response.statusCode == 200) { final String responseBody = utf8.decode(response.bodyBytes); final Map data = jsonDecode(responseBody); return APIResponse>( statusCode: response.statusCode, data: data, ); } else { return APIResponse>( statusCode: response.statusCode, errorMessage: 'Failed to load secret keys (HTTP ${response.statusCode})', ); } } catch (e, st) { dev.log('fetchSecretKeys() error', error: e, stackTrace: st); return APIResponse>( errorMessage: e.toString(), ); } } Future>> fetchProfile() async { try { final uri = Uri.https(baseUrl, '/api/v1/public/profile'); final response = await http.get( uri, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }, ); if (response.statusCode == 200) { final String responseBody = utf8.decode(response.bodyBytes); final Map data = jsonDecode(responseBody); return APIResponse>( statusCode: response.statusCode, data: data, ); } else { return APIResponse>( statusCode: response.statusCode, errorMessage: 'Failed to load profile (HTTP ${response.statusCode})', ); } } catch (e, st) { dev.log('fetchProfile() error', error: e, stackTrace: st); return APIResponse>( errorMessage: e.toString(), ); } } }