Browse Source

refactoring

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 2 years ago
parent
commit
9f9f1c9d2e
1 changed files with 38 additions and 41 deletions
  1. 38 41
      iOSClient/Networking/E2EE/NCEndToEndMetadata.swift

+ 38 - 41
iOSClient/Networking/E2EE/NCEndToEndMetadata.swift

@@ -37,7 +37,7 @@ class NCEndToEndMetadata: NSObject {
             let recipient: [String: String]
         }
 
-        struct EncryptedFileAttributes: Codable {
+        struct Encrypted: Codable {
             let key: String
             let filename: String
             let mimetype: String
@@ -85,7 +85,7 @@ class NCEndToEndMetadata: NSObject {
 
             // *** File ***
 
-            let encrypted = E2ee.EncryptedFileAttributes(key: recordE2eEncryption.key, filename: recordE2eEncryption.fileName, mimetype: recordE2eEncryption.mimeType, version: recordE2eEncryption.version)
+            let encrypted = E2ee.Encrypted(key: recordE2eEncryption.key, filename: recordE2eEncryption.fileName, mimetype: recordE2eEncryption.mimeType, version: recordE2eEncryption.version)
 
             do {
 
@@ -170,59 +170,56 @@ class NCEndToEndMetadata: NSObject {
 
                     let fileNameIdentifier = file.key
                     let filesCodable = file.value as E2ee.FilesCodable
-
                     let encrypted = filesCodable.encrypted
                     let metadataKey = metadataKeys["\(filesCodable.metadataKey)"]
 
-                    guard let encryptedFileAttributesJson = NCEndToEndEncryption.sharedManager().decryptEncryptedJson(encrypted, key: metadataKey) else {
-                        return false
-                    }
+                    if let encrypted = NCEndToEndEncryption.sharedManager().decryptEncryptedJson(encrypted, key: metadataKey), let encryptedData = encrypted.data(using: .utf8) {
+                        do {
+                            let encrypted = try jsonDecoder.decode(E2ee.Encrypted.self, from: encryptedData)
 
-                    do {
-                        let encryptedFileAttributes = try jsonDecoder.decode(E2ee.EncryptedFileAttributes.self, from: encryptedFileAttributesJson.data(using: .utf8)!)
+                            if let metadata = NCManageDatabase.shared.getMetadata(predicate: NSPredicate(format: "account == %@ AND fileName == %@", account, fileNameIdentifier)) {
+                                let metadata = tableMetadata.init(value: metadata)
 
-                        if let metadata = NCManageDatabase.shared.getMetadata(predicate: NSPredicate(format: "account == %@ AND fileName == %@", account, fileNameIdentifier)) {
-                            let metadata = tableMetadata.init(value: metadata)
+                                let object = tableE2eEncryption()
 
-                            let object = tableE2eEncryption()
+                                object.account = account
+                                object.authenticationTag = filesCodable.authenticationTag ?? ""
+                                object.blob = "files"
+                                object.fileName = encrypted.filename
+                                object.fileNameIdentifier = fileNameIdentifier
+                                object.fileNamePath = CCUtility.returnFileNamePath(fromFileName: encrypted.filename, serverUrl: serverUrl, urlBase: urlBase, userId: userId, account: account)
+                                object.key = encrypted.key
+                                object.initializationVector = filesCodable.initializationVector
+                                object.metadataKey = metadataKey!
+                                object.metadataKeyIndex = filesCodable.metadataKey
+                                object.metadataVersion = 1
+                                object.mimeType = encrypted.mimetype
+                                object.serverUrl = serverUrl
+                                object.version = encrypted.version
 
-                            object.account = account
-                            object.authenticationTag = filesCodable.authenticationTag ?? ""
-                            object.blob = "files"
-                            object.fileName = encryptedFileAttributes.filename
-                            object.fileNameIdentifier = fileNameIdentifier
-                            object.fileNamePath = CCUtility.returnFileNamePath(fromFileName: encryptedFileAttributes.filename, serverUrl: serverUrl, urlBase: urlBase, userId: userId, account: account)
-                            object.key = encryptedFileAttributes.key
-                            object.initializationVector = filesCodable.initializationVector
-                            object.metadataKey = metadataKey!
-                            object.metadataKeyIndex = filesCodable.metadataKey
-                            object.metadataVersion = 1
-                            object.mimeType = encryptedFileAttributes.mimetype
-                            object.serverUrl = serverUrl
-                            object.version = encryptedFileAttributes.version
+                                // If exists remove records
+                                NCManageDatabase.shared.deleteE2eEncryption(predicate: NSPredicate(format: "account == %@ AND fileNamePath == %@", object.account, object.fileNamePath))
+                                NCManageDatabase.shared.deleteE2eEncryption(predicate: NSPredicate(format: "account == %@ AND fileNameIdentifier == %@", object.account, object.fileNameIdentifier))
 
-                            // If exists remove records
-                            NCManageDatabase.shared.deleteE2eEncryption(predicate: NSPredicate(format: "account == %@ AND fileNamePath == %@", object.account, object.fileNamePath))
-                            NCManageDatabase.shared.deleteE2eEncryption(predicate: NSPredicate(format: "account == %@ AND fileNameIdentifier == %@", object.account, object.fileNameIdentifier))
+                                // Write file parameter for decrypted on DB
+                                NCManageDatabase.shared.addE2eEncryption(object)
 
-                            // Write file parameter for decrypted on DB
-                            NCManageDatabase.shared.addE2eEncryption(object)
+                                // Update metadata on tableMetadata
+                                metadata.fileNameView = encrypted.filename
 
-                            // Update metadata on tableMetadata
-                            metadata.fileNameView = encryptedFileAttributes.filename
+                                let results = NKCommon.shared.getInternalType(fileName: encrypted.filename, mimeType: metadata.contentType, directory: metadata.directory)
 
-                            let results = NKCommon.shared.getInternalType(fileName: encryptedFileAttributes.filename, mimeType: metadata.contentType, directory: metadata.directory)
+                                metadata.contentType = results.mimeType
+                                metadata.iconName = results.iconName
+                                metadata.classFile = results.classFile
 
-                            metadata.contentType = results.mimeType
-                            metadata.iconName = results.iconName
-                            metadata.classFile = results.classFile
+                                NCManageDatabase.shared.addMetadata(metadata)
+                            }
 
-                            NCManageDatabase.shared.addMetadata(metadata)
+                        } catch let error {
+                            print("Serious internal error in decoding metadata (" + error.localizedDescription + ")")
+                            return false
                         }
-
-                    } catch let error {
-                        print("Serious internal error in decoding metadata (" + error.localizedDescription + ")")
-                        return false
                     }
                 }
             }