|
@@ -42,11 +42,13 @@ class NCNetworkingE2EEUpload: NSObject {
|
|
return instance
|
|
return instance
|
|
}()
|
|
}()
|
|
|
|
|
|
|
|
+ let errorEncodeMetadata = NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: NSLocalizedString("_e2e_error_encode_metadata_", comment: ""))
|
|
|
|
+ let errorCreateEncrypted = NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: "_e2e_error_create_encrypted_")
|
|
|
|
+
|
|
func upload(metadata: tableMetadata, uploadE2EEDelegate: uploadE2EEDelegate? = nil) async -> (NKError) {
|
|
func upload(metadata: tableMetadata, uploadE2EEDelegate: uploadE2EEDelegate? = nil) async -> (NKError) {
|
|
|
|
|
|
var metadata = tableMetadata.init(value: metadata)
|
|
var metadata = tableMetadata.init(value: metadata)
|
|
let ocIdTemp = metadata.ocId
|
|
let ocIdTemp = metadata.ocId
|
|
- let errorCreateEncrypted = NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: "_e2e_error_create_encrypted_")
|
|
|
|
|
|
|
|
// Create metadata for upload
|
|
// Create metadata for upload
|
|
if let result = NCManageDatabase.shared.getMetadata(predicate: NSPredicate(format: "serverUrl == %@ AND fileNameView == %@ AND ocId != %@", metadata.serverUrl, metadata.fileNameView, metadata.ocId)) {
|
|
if let result = NCManageDatabase.shared.getMetadata(predicate: NSPredicate(format: "serverUrl == %@ AND fileNameView == %@ AND ocId != %@", metadata.serverUrl, metadata.fileNameView, metadata.ocId)) {
|
|
@@ -64,7 +66,7 @@ class NCNetworkingE2EEUpload: NSObject {
|
|
|
|
|
|
guard let e2eToken = lockResults.e2eToken, let fileId = lockResults.fileId, lockResults.error == .success else {
|
|
guard let e2eToken = lockResults.e2eToken, let fileId = lockResults.fileId, lockResults.error == .success else {
|
|
NCManageDatabase.shared.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", ocIdTemp))
|
|
NCManageDatabase.shared.deleteMetadata(predicate: NSPredicate(format: "ocId == %@", ocIdTemp))
|
|
- NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterUploadedFile, userInfo: ["ocId": metadata.ocId, "serverUrl": metadata.serverUrl, "account": metadata.account, "fileName": metadata.fileName, "ocIdTemp": ocIdTemp, "error": NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: "_e2e_error_create_encrypted_")])
|
|
|
|
|
|
+ NotificationCenter.default.postOnMainThread(name: NCGlobal.shared.notificationCenterUploadedFile, userInfo: ["ocId": metadata.ocId, "serverUrl": metadata.serverUrl, "account": metadata.account, "fileName": metadata.fileName, "ocIdTemp": ocIdTemp, "error": errorCreateEncrypted])
|
|
return errorCreateEncrypted
|
|
return errorCreateEncrypted
|
|
}
|
|
}
|
|
|
|
|
|
@@ -128,7 +130,7 @@ class NCNetworkingE2EEUpload: NSObject {
|
|
var method = "POST"
|
|
var method = "POST"
|
|
|
|
|
|
if NCEndToEndEncryption.sharedManager()?.encryptFile(metadata.fileNameView, fileNameIdentifier: metadata.fileName, directory: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId), key: &key, initializationVector: &initializationVector, authenticationTag: &authenticationTag) == false {
|
|
if NCEndToEndEncryption.sharedManager()?.encryptFile(metadata.fileNameView, fileNameIdentifier: metadata.fileName, directory: CCUtility.getDirectoryProviderStorageOcId(metadata.ocId), key: &key, initializationVector: &initializationVector, authenticationTag: &authenticationTag) == false {
|
|
- return NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: "_e2e_error_create_encrypted_")
|
|
|
|
|
|
+ return errorCreateEncrypted
|
|
}
|
|
}
|
|
|
|
|
|
// Get last metadata
|
|
// Get last metadata
|
|
@@ -163,13 +165,17 @@ class NCNetworkingE2EEUpload: NSObject {
|
|
NCManageDatabase.shared.addE2eEncryption(objectE2eEncryption)
|
|
NCManageDatabase.shared.addE2eEncryption(objectE2eEncryption)
|
|
|
|
|
|
// Rebuild metadata
|
|
// Rebuild metadata
|
|
- guard let tableE2eEncryption = NCManageDatabase.shared.getE2eEncryptions(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", metadata.account, metadata.serverUrl)),
|
|
|
|
- let e2eMetadataNew = NCEndToEndMetadata().encoderMetadata(tableE2eEncryption, account: metadata.account, serverUrl: metadata.serverUrl) else {
|
|
|
|
- return NKError(errorCode: NCGlobal.shared.errorInternalError, errorDescription: NSLocalizedString("_e2e_error_encode_metadata_", comment: ""))
|
|
|
|
|
|
+ guard let tableE2eEncryption = NCManageDatabase.shared.getE2eEncryptions(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", metadata.account, metadata.serverUrl)) else {
|
|
|
|
+ return errorEncodeMetadata
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ let resultEncoder = NCEndToEndMetadata().encoderMetadata(tableE2eEncryption, account: metadata.account, serverUrl: metadata.serverUrl)
|
|
|
|
+ if resultEncoder.metadata == nil {
|
|
|
|
+ return errorEncodeMetadata
|
|
}
|
|
}
|
|
|
|
|
|
// send metadata
|
|
// send metadata
|
|
- let putE2EEMetadataResults = await NextcloudKit.shared.putE2EEMetadata(fileId: fileId, e2eToken: e2eToken, e2eMetadata: e2eMetadataNew, signature: nil, method: method)
|
|
|
|
|
|
+ let putE2EEMetadataResults = await NextcloudKit.shared.putE2EEMetadata(fileId: fileId, e2eToken: e2eToken, e2eMetadata: resultEncoder.metadata, signature: resultEncoder.signature, method: method)
|
|
|
|
|
|
return putE2EEMetadataResults.error
|
|
return putE2EEMetadataResults.error
|
|
}
|
|
}
|