generateSignedUploadUrl method

Future<Map<String, dynamic>> generateSignedUploadUrl({
  1. required String objectName,
  2. required String contentType,
  3. String acl = 'private',
  4. String? bucket,
})

Implementation

Future<Map<String, dynamic>> generateSignedUploadUrl({
  required String objectName,
  required String contentType,
  String acl = 'private',
  String? bucket,
}) async {
  final url = Uri.parse('${config.baseUrl}/generate-signed-url');
  final response = await _client.post(
    url,
    headers: _gatewayHeaders,
    body: jsonEncode({
      'key': objectName,
      'content_type': contentType,
      'acl': acl,
      'type': 'PUT',
      'bucket': bucket ?? config.uploadBucket ?? '',
    }),
  );

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

  return jsonDecode(response.body) as Map<String, dynamic>;
}