[Client] Upload with StreamedRequest
This commit is contained in:
parent
6e18838725
commit
995da7d255
|
@ -781,18 +781,26 @@ class Client {
|
||||||
/// and returns the mxc url as a string.
|
/// and returns the mxc url as a string.
|
||||||
Future<String> upload(MatrixFile file) async {
|
Future<String> upload(MatrixFile file) async {
|
||||||
dynamic fileBytes;
|
dynamic fileBytes;
|
||||||
if (this.homeserver != "https://fakeServer.notExisting") {
|
// For testing
|
||||||
fileBytes = file.bytes;
|
if (this.homeserver.toLowerCase() == "https://fakeserver.notexisting") {
|
||||||
|
return "mxc://example.com/AQwafuaFswefuhsfAFAgsw";
|
||||||
}
|
}
|
||||||
|
Map<String, String> headers = {};
|
||||||
|
headers["Authorization"] = "Bearer $accessToken";
|
||||||
|
headers["Content-Type"] = mime(file.path);
|
||||||
String fileName = file.path.split("/").last.toLowerCase();
|
String fileName = file.path.split("/").last.toLowerCase();
|
||||||
String mimeType = mime(file.path);
|
final url = "$homeserver/_matrix/media/r0/upload?filename=$fileName";
|
||||||
print("[UPLOADING] $fileName, type: $mimeType, size: ${fileBytes?.length}");
|
final streamedRequest = http.StreamedRequest('POST', Uri.parse(url))
|
||||||
final Map<String, dynamic> resp = await jsonRequest(
|
..headers.addAll(headers);
|
||||||
type: HTTPType.POST,
|
streamedRequest.contentLength = await file.bytes.length;
|
||||||
action: "/media/r0/upload?filename=$fileName",
|
streamedRequest.sink.add(file.bytes);
|
||||||
data: fileBytes,
|
streamedRequest.sink.close();
|
||||||
contentType: mimeType);
|
print("[UPLOADING] $fileName, size: ${fileBytes?.length}");
|
||||||
return resp["content_uri"];
|
var streamedResponse = await streamedRequest.send();
|
||||||
|
Map<String, dynamic> jsonResponse = json.decode(
|
||||||
|
String.fromCharCodes(await streamedResponse.stream.first),
|
||||||
|
);
|
||||||
|
return jsonResponse["content_uri"];
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<dynamic> _syncRequest;
|
Future<dynamic> _syncRequest;
|
||||||
|
|
|
@ -303,7 +303,7 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.6.4"
|
version: "1.6.4"
|
||||||
pedantic:
|
pedantic:
|
||||||
dependency: "direct main"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: pedantic
|
name: pedantic
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
|
@ -492,4 +492,4 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.16"
|
version: "2.1.16"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=2.3.0-dev.0.1 <3.0.0"
|
dart: ">=2.7.0 <3.0.0"
|
||||||
|
|
|
@ -345,14 +345,6 @@ void main() {
|
||||||
expect(newID, "!1234:fakeServer.notExisting");
|
expect(newID, "!1234:fakeServer.notExisting");
|
||||||
});
|
});
|
||||||
|
|
||||||
test('upload', () async {
|
|
||||||
final MatrixFile testFile =
|
|
||||||
MatrixFile(bytes: [], path: "fake/path/file.jpeg");
|
|
||||||
|
|
||||||
final dynamic resp = await matrix.upload(testFile);
|
|
||||||
expect(resp, "mxc://example.com/AQwafuaFswefuhsfAFAgsw");
|
|
||||||
});
|
|
||||||
|
|
||||||
test('setAvatar', () async {
|
test('setAvatar', () async {
|
||||||
final MatrixFile testFile =
|
final MatrixFile testFile =
|
||||||
MatrixFile(bytes: [], path: "fake/path/file.jpeg");
|
MatrixFile(bytes: [], path: "fake/path/file.jpeg");
|
||||||
|
|
Loading…
Reference in a new issue