fix: complete url xml

This commit is contained in:
Prateek Sunal 2024-04-06 22:42:57 +05:30
parent c2bbca3bc7
commit 2a4a551d52
2 changed files with 29 additions and 9 deletions

View file

@ -11,6 +11,13 @@ import "package:photos/utils/xml_parser_util.dart";
final _enteDio = NetworkClient.instance.enteDio;
final _dio = NetworkClient.instance.getDio();
class PartETag {
final int partNumber;
final String eTag;
PartETag(this.partNumber, this.eTag);
}
class MultipartUploadURLs {
final String objectKey;
final List<String> partsURLs;
@ -59,8 +66,6 @@ Future<void> putMultipartFile(
// upload individual parts and get their etags
final etags = await uploadParts(urls.partsURLs, encryptedFile);
print(etags);
// complete the multipart upload
await completeMultipartUpload(etags, urls.completeURL);
}
@ -109,11 +114,16 @@ Future<void> completeMultipartUpload(
String completeURL,
) async {
final body = convertJs2Xml({
'CompleteMultipartUpload': partEtags.entries.toList(),
'CompleteMultipartUpload': partEtags.entries
.map(
(e) => PartETag(
e.key + 1,
e.value,
),
)
.toList(),
});
print(body);
try {
await _dio.post(
completeURL,

View file

@ -1,5 +1,6 @@
// ignore_for_file: implementation_imports
import "package:photos/utils/multipart_upload_util.dart";
import "package:xml/src/xml/entities/named_entities.dart";
import "package:xml/xml.dart";
@ -23,17 +24,26 @@ void buildXml(XmlBuilder builder, dynamic node) {
for (var item in node) {
buildXml(builder, item);
}
} else {
} else if (node is PartETag) {
builder.element(
"Part",
nest: () {
builder.attribute(
builder.element(
"PartNumber",
(node as MapEntry<int, String>).key + 1,
nest: () {
buildXml(builder, node.partNumber);
},
);
builder.element(
"ETag",
nest: () {
buildXml(builder, node.eTag);
},
);
builder.attribute("ETag", node.value);
},
);
} else {
builder.text(node.toString());
}
}