postStreamRaw method

Stream<String> postStreamRaw(
  1. String endpoint,
  2. Map<String, dynamic> data
)

Make a POST request and return raw stream

Implementation

Stream<String> postStreamRaw(
  String endpoint,
  Map<String, dynamic> data,
) async* {
  try {
    if (_logger.isLoggable(Level.FINE)) {
      _logger.fine('Phind stream request payload: ${jsonEncode(data)}');
    }

    final response = await _dio.post(
      endpoint,
      data: data,
      options: Options(responseType: ResponseType.stream),
    );

    _logger.info('Phind stream HTTP status: ${response.statusCode}');

    if (response.statusCode != 200) {
      throw ProviderError(
        'Phind API returned status ${response.statusCode}',
      );
    }

    final stream = response.data as ResponseBody;
    await for (final chunk in stream.stream.map(utf8.decode)) {
      yield chunk;
    }
  } on DioException catch (e) {
    throw DioErrorHandler.handleDioError(e, 'Phind');
  }
}