request method

Future<Stream<String>> request(
  1. String path, {
  2. Map<String, dynamic>? requestBody,
  3. Map<String, dynamic>? queryParameters,
  4. String method = 'POST',
  5. Map<String, String>? headers,
})

Implementation

Future<Stream<String>> request(
  String path, {
  Map<String, dynamic>? requestBody,
  Map<String, dynamic>? queryParameters,
  String method = 'POST',
  Map<String, String>? headers,
}) async {
  Uri uri = Uri.parse(
    "$baseUrl$path",
  ).replace(queryParameters: queryParameters);

  io.HttpClient httpClient = io.HttpClient();
  io.HttpClientRequest request = await httpClient.openUrl(method, uri);

  this.headers?.forEach((key, value) {
    request.headers.set(key, value);
  });
  headers?.forEach((key, value) {
    request.headers.set(key, value);
  });
  if (apiKey != null)
    request.headers.add(io.HttpHeaders.authorizationHeader, 'Bearer $apiKey');

  if (requestBody != null) {
    request.add(utf8.encode(jsonEncode(requestBody)));
  }

  io.HttpClientResponse response = await request.close();

  if (response.statusCode >= 400) {
    final errorBody = await response.transform(utf8.decoder).join();
    throw SseRequestException(response.statusCode, errorBody);
  }

  Stream<String> stream = response.transform(utf8.decoder);
  return stream;
}