getJson method

Future<Map<String, dynamic>> getJson(
  1. String endpoint
)

Performs a GET request and returns the parsed JSON response.

Implementation

Future<Map<String, dynamic>> getJson(String endpoint) async {
  try {
    // Check if endpoint already has query parameters.

    final separator = endpoint.contains('?') ? '&' : '?';
    final url = '$baseUrl/$endpoint${separator}api_key=$apiKey';

    final response = await _client.get(Uri.parse(url)).timeout(_timeout);

    if (response.statusCode == 200) {
      return json.decode(response.body) as Map<String, dynamic>;
    } else {
      throw NetworkException(
        'Failed to load data from $endpoint',
        statusCode: response.statusCode,
      );
    }
  } on http.ClientException catch (e) {
    throw NetworkException('Network error: ${e.message}');
  } on FormatException catch (e) {
    throw NetworkException('Invalid response format: ${e.message}');
  } on Exception catch (e) {
    throw NetworkException('Unexpected error: ${e.toString()}');
  }
}