multipart function

Future<Response> multipart(
  1. String uri, {
  2. Map<String, String>? headers,
  3. required File file,
})

Implementation

Future<Response> multipart(
  String uri, {
  Map<String, String>? headers,
  required File file,
}) async {
  final info = "(POST) $uri";

  report("Request $info\nRequestHeader $headers");

  final request = http.MultipartRequest("POST", Uri.parse(uri));

  if (headers != null) {
    request.headers.addAll(headers);
  }

  final split = file.path.split("/");

  final last = split[split.length - 1].split(".");

  final extension = last.length > 1 ? last[1] : "";

  final multipartFile = await http.MultipartFile.fromPath(
    "file",
    file.path,
    contentType: parser.MediaType("image", extension),
  );

  request.files.add(multipartFile);

  final stream = await request.send();

  final response = await retry(() => http.Response.fromStream(stream));

  return transform(info, response);
}