Prateek Sunal 1 рік тому
батько
коміт
baeac73339

+ 15 - 5
mobile/lib/utils/multipart_upload_util.dart

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

+ 14 - 4
mobile/lib/utils/xml_parser_util.dart

@@ -1,5 +1,6 @@
 // ignore_for_file: implementation_imports
 // 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/src/xml/entities/named_entities.dart";
 import "package:xml/xml.dart";
 import "package:xml/xml.dart";
 
 
@@ -23,17 +24,26 @@ void buildXml(XmlBuilder builder, dynamic node) {
     for (var item in node) {
     for (var item in node) {
       buildXml(builder, item);
       buildXml(builder, item);
     }
     }
-  } else {
+  } else if (node is PartETag) {
     builder.element(
     builder.element(
       "Part",
       "Part",
       nest: () {
       nest: () {
-        builder.attribute(
+        builder.element(
           "PartNumber",
           "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());
   }
   }
 }
 }