uploadMedia method
Uploads an image or file and returns the file URL.
Takes fileName
as the name of the file.
Takes fileData
as the file binary data.
Takes mimeType
as the mime type.
Throws ArgumentError if the file data is empty.
Throws ArgumentError if the mime type is empty.
Implementation
Future<DialoguewiseResponse> uploadMedia(
String fileName, List<int> fileData, String mimeType) async {
if (fileData.isEmpty) {
throw ArgumentError('Please provide the file data.');
}
if (mimeType.isEmpty) {
throw ArgumentError('Please provide the mime type of the file.');
}
if (fileName.isEmpty) {
throw ArgumentError('Please provide a filename.');
}
final apiUrl = '$apiBaseUrl${Endpoints.uploadMedia}';
final uri = Uri.parse(apiUrl);
final List<String> mediaType = mimeType.split('/');
final httpRequest = http.MultipartRequest('POST', uri)
..headers['Access-Control-Allow-origin'] = '*'
..headers['Access-Control-Allow-Methods'] = '*'
..headers['Access-Control-Allow-Headers'] = 'Content-Type, Access-Token'
..headers['Access-Token'] = accessToken
..files.add(
http.MultipartFile.fromBytes(
'file',
fileData,
filename: fileName,
contentType: MediaType(mediaType.first, mediaType.last),
),
);
final http.StreamedResponse response = await httpRequest.send();
DialoguewiseResponse dialogueWiseResponse = DialoguewiseResponse(
reasonPhrase: response.reasonPhrase ?? 'Something went wrong.',
statusCode: response.statusCode,
);
var responseBody = await response.stream.bytesToString();
if (responseBody.isNotEmpty) {
dialogueWiseResponse = dialogueWiseResponse.copyWith(
response: jsonDecode(responseBody) as Map<String, dynamic>,
);
}
return dialogueWiseResponse;
}