uploadBytesToSignedUrl method

Future<String> uploadBytesToSignedUrl({
  1. required String signedUrl,
  2. required List<int> bytes,
  3. required String contentType,
})

Implementation

Future<String> uploadBytesToSignedUrl({
  required String signedUrl,
  required List<int> bytes,
  required String contentType,
}) async {
  final response = await _client.put(
    Uri.parse(signedUrl),
    headers: {
      'Content-Type': contentType,
    },
    body: bytes,
  );

  if (response.statusCode < 200 || response.statusCode >= 300) {
    throw DataleonApiException(
      'Failed to upload bytes to signed url',
      statusCode: response.statusCode,
    );
  }

  final expiresIndex = signedUrl.indexOf('?Expires');
  if (expiresIndex != -1) {
    return signedUrl.substring(0, expiresIndex);
  }

  final queryIndex = signedUrl.indexOf('?');
  if (queryIndex != -1) {
    return signedUrl.substring(0, queryIndex);
  }

  return signedUrl;
}