fetchData method
Implementation
Future<ProjectConfig?> fetchData() async {
_logger.logMessage('Fetching skin configuration for the provided apiKey.');
var client = http.Client();
try {
final apiKey = await _cacheService.getApiKey();
var response = await client
.post(
Uri.https(FskinConstants.baseUrl, 'fskin/skin'),
headers: {'Content-Type': 'application/json'},
body: jsonEncode({'apiKey': apiKey}),
)
.timeout(const Duration(seconds: 5));
_logger.logMessage(
'Received response with status code: ${response.statusCode}',
);
if (response.statusCode != 200) {
_logger.logError(
'Error fetching skin configuration: ${response.statusCode}',
errorObject: response,
);
return await getCachedConfig();
}
var decodedResponse =
jsonDecode(utf8.decode(response.bodyBytes)) as Map<String, dynamic>;
var projectConfig = ProjectConfig.fromMap(decodedResponse);
_cacheService.saveProjectConfig(decodedResponse);
return projectConfig;
} catch (e) {
_logger.logError('Error fetching skin configuration: $e', errorObject: e);
return await getCachedConfig();
} finally {
client.close();
}
}