uploadImage static method
Implementation
static Future<ResponseData> uploadImage(
String endpoint, {
required List<int> imageBytes,
required String fileName,
Map<String, String>? fields,
Map<String, String>? headers,
}) async {
final uri = _getUri(endpoint);
final requestHeaders = <String, String>{};
if (ApinionConfig.key != null) {
requestHeaders['Authorization'] = ApinionConfig.key!;
}
if (headers != null) {
requestHeaders.addAll(headers);
}
ApinionLogger.info('📤 Uploading image to $uri');
try {
var request = http.MultipartRequest('POST', uri);
request.headers.addAll(requestHeaders);
if (fields != null) {
request.fields.addAll(fields);
}
request.files.add(
http.MultipartFile.fromBytes('file', imageBytes, filename: fileName));
final streamedResponse =
await request.send().timeout(ApinionConfig.timeout);
final response = await http.Response.fromStream(streamedResponse);
ApinionLogger.debug('📨 Response: ${response.body}');
return _handleResponse(response);
} on TimeoutException {
ApinionLogger.error(
'⏰ Upload timed out after ${ApinionConfig.timeout.inSeconds} seconds.');
return ResponseData(
isSuccess: false,
statusCode: 408,
responseData: null,
errorMessage: 'Upload timeout. Please try again later.',
);
} catch (e) {
ApinionLogger.error('💥 Upload error: $e');
return ResponseData(
isSuccess: false,
statusCode: 500,
responseData: null,
errorMessage: 'Unexpected upload error: $e',
);
}
}