get method

  1. @override
Future<TTHttpResponse> get(
  1. TTHttpRequest request
)
override

Implementation

@override
Future<TTHttpResponse> get(TTHttpRequest request) async {
  final previousOptions = _dio.options;
  _dio.options = previousOptions.copyWith(
    connectTimeout: request.connectTimeout,
    receiveTimeout: request.receiveTimeout,
  );

  try {
    final response = await _dio.get(
      request.url,
      queryParameters:
          request.queryParameters.isEmpty ? null : request.queryParameters,
      options: Options(
        headers: request.headers,
        responseType: ResponseType.plain,
      ),
    );

    return TTHttpResponse(
      statusCode: response.statusCode ?? 0,
      data: response.data,
      headers: response.headers.map.map(
        (key, value) => MapEntry(key, List<String>.from(value)),
      ),
    );
  } on DioException catch (error) {
    final status = error.response?.statusCode;
    final data = error.response?.data;
    final headers = error.response?.headers.map
            .map((key, value) => MapEntry(key, List<String>.from(value))) ??
        <String, List<String>>{};

    throw TTHttpException(
      statusCode: status,
      message: error.message,
      data: data,
      headers: headers,
    );
  } catch (error, stackTrace) {
    _logger.error('Unexpected HTTP client error',
        error: error, stackTrace: stackTrace);
    rethrow;
  } finally {
    _dio.options = previousOptions;
  }
}