Explorar el Código

Start procedure for managed version etag FPE

Marino Faggiana hace 6 años
padre
commit
9fe5866868

+ 13 - 5
PickerFileProvider/FileProvider.swift

@@ -342,12 +342,20 @@ class FileProvider: NSFileProviderExtension {
                 return
             }
             
-            let task = ocNetworking?.downloadFileNameServerUrl("\(serverUrl)/\(metadata.fileName)", fileNameLocalPath: "\(directoryUser)/\(metadata.fileID)", communication: CCNetworking.shared().sharedOCCommunicationExtensionDownload(metadata.fileName), success: { (lenght) in
-                    
-                NCManageDatabase.sharedInstance.addLocalFile(metadata: metadata)
-                    
+            let task = ocNetworking?.downloadFileNameServerUrl("\(serverUrl)/\(metadata.fileName)", fileNameLocalPath: "\(directoryUser)/\(metadata.fileID)", communication: CCNetworking.shared().sharedOCCommunicationExtensionDownload(metadata.fileName), success: { (lenght, etag, date) in
+                
                 // copy download file to url
                 _ = self.copyFile("\(directoryUser)/\(metadata.fileID)", toPath: url.path)
+            
+                // update DB Local
+                metadata.date = date! as NSDate
+                metadata.etag = etag!
+                NCManageDatabase.sharedInstance.addLocalFile(metadata: metadata)
+                NCManageDatabase.sharedInstance.setLocalFile(fileID: metadata.fileID, date: date! as NSDate, exifDate: nil, exifLatitude: nil, exifLongitude: nil, fileName: nil, etag: etag, etagFPE: etag)
+                
+                // Update DB Metadata
+                _ = NCManageDatabase.sharedInstance.addMetadata(metadata)
+
                 completionHandler(nil)
                     
             }, failure: { (errorMessage, errorCode) in
@@ -732,7 +740,7 @@ class FileProvider: NSFileProviderExtension {
 
             } else {
                 
-                NCManageDatabase.sharedInstance.setLocalFile(fileID: metadata.fileID, date: nil, exifDate: nil, exifLatitude: nil, exifLongitude: nil, fileName: itemName)
+                NCManageDatabase.sharedInstance.setLocalFile(fileID: metadata.fileID, date: nil, exifDate: nil, exifLatitude: nil, exifLongitude: nil, fileName: itemName, etag: nil, etagFPE: nil)
             }
             
             completionHandler(item, nil)

+ 1 - 1
iOSClient/Actions/CCActions.swift

@@ -261,7 +261,7 @@ class CCActions: NSObject {
             
         } else {
             
-            NCManageDatabase.sharedInstance.setLocalFile(fileID: metadataNet.fileID, date: nil, exifDate: nil, exifLatitude: nil, exifLongitude: nil, fileName: metadataNet.fileNameTo)
+            NCManageDatabase.sharedInstance.setLocalFile(fileID: metadataNet.fileID, date: nil, exifDate: nil, exifLatitude: nil, exifLongitude: nil, fileName: metadataNet.fileNameTo, etag: nil, etagFPE: nil)
         }
         
         metadataNet.delegate?.renameSuccess(metadataNet)

+ 2 - 0
iOSClient/Database/NCDatabase.swift

@@ -179,6 +179,7 @@ class tableLocalFile: Object {
     @objc dynamic var account = ""
     @objc dynamic var date = NSDate()
     @objc dynamic var etag = ""
+    @objc dynamic var etagFPE = ""
     @objc dynamic var exifDate = NSDate()
     @objc dynamic var exifLatitude = ""
     @objc dynamic var exifLongitude = ""
@@ -260,6 +261,7 @@ class tableQueueUpload: Object {
     @objc dynamic var account = ""
     @objc dynamic var assetLocalIdentifier = ""
     @objc dynamic var date = NSDate()
+    @objc dynamic var errorCode: Int = 0
     @objc dynamic var fileName = ""
     @objc dynamic var lock: Bool = false
     @objc dynamic var path: String?

+ 13 - 2
iOSClient/Database/NCManageDatabase.swift

@@ -57,7 +57,7 @@ class NCManageDatabase: NSObject {
         let config = Realm.Configuration(
         
             fileURL: dirGroup?.appendingPathComponent("\(appDatabaseNextcloud)/\(k_databaseDefault)"),
-            schemaVersion: 20,
+            schemaVersion: 21,
             
             // 10 : Version 2.18.0
             // 11 : Version 2.18.2
@@ -70,6 +70,7 @@ class NCManageDatabase: NSObject {
             // 18 : Version 2.20.6
             // 19 : Version 2.20.7
             // 20 : Version 2.21.0
+            // 21 : Version 2.21.3
             
             migrationBlock: { migration, oldSchemaVersion in
                 // We haven’t migrated anything yet, so oldSchemaVersion == 0
@@ -1446,7 +1447,7 @@ class NCManageDatabase: NSObject {
         }
     }
     
-    @objc func setLocalFile(fileID: String, date: NSDate?, exifDate: NSDate?, exifLatitude: String?, exifLongitude: String?, fileName: String?) {
+    @objc func setLocalFile(fileID: String, date: NSDate?, exifDate: NSDate?, exifLatitude: String?, exifLongitude: String?, fileName: String?, etag: String?, etagFPE: String?) {
         
         guard self.getAccountActive() != nil else {
             return
@@ -1477,6 +1478,12 @@ class NCManageDatabase: NSObject {
                 if let fileName = fileName {
                     result.fileName = fileName
                 }
+                if let etag = etag {
+                    result.etag = etag
+                }
+                if let etagFPE = etagFPE {
+                    result.etagFPE = etagFPE
+                }
             }
         } catch let error {
             print("[LOG] Could not write to database: ", error)
@@ -2230,6 +2237,7 @@ class NCManageDatabase: NSObject {
                         
                         addObject.account = tableAccount.account
                         addObject.assetLocalIdentifier = metadataNet.assetLocalIdentifier
+                        addObject.errorCode = metadataNet.errorCode
                         addObject.fileName = metadataNet.fileName
                         addObject.path = metadataNet.path
                         addObject.selector = metadataNet.selector
@@ -2273,6 +2281,7 @@ class NCManageDatabase: NSObject {
                         
                         addObject.account = tableAccount.account
                         addObject.assetLocalIdentifier = metadataNet.assetLocalIdentifier
+                        addObject.errorCode = metadataNet.errorCode
                         addObject.fileName = metadataNet.fileName
                         addObject.path = metadataNet.path
                         addObject.selector = metadataNet.selector
@@ -2312,6 +2321,7 @@ class NCManageDatabase: NSObject {
         
         metadataNet.account = result.account
         metadataNet.assetLocalIdentifier = result.assetLocalIdentifier
+        metadataNet.errorCode = result.errorCode
         metadataNet.fileName = result.fileName
         metadataNet.path = result.path
         metadataNet.selector = result.selector
@@ -2378,6 +2388,7 @@ class NCManageDatabase: NSObject {
         
         metadataNet.account = result.account
         metadataNet.assetLocalIdentifier = result.assetLocalIdentifier
+        metadataNet.errorCode = result.errorCode
         metadataNet.fileName = result.fileName
         metadataNet.path = result.path
         metadataNet.selector = result.selector

+ 1 - 1
iOSClient/Networking/OCNetworking.h

@@ -42,7 +42,7 @@
 @property (nonatomic, assign) BOOL isExecuting;
 @property (nonatomic, assign) BOOL isFinished;
 
-- (NSURLSessionTask *)downloadFileNameServerUrl:(NSString *)fileNameServerUrl fileNameLocalPath:(NSString *)fileNameLocalPath communication:(OCCommunication *)communication success:(void (^)(int64_t length))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
+- (NSURLSessionTask *)downloadFileNameServerUrl:(NSString *)fileNameServerUrl fileNameLocalPath:(NSString *)fileNameLocalPath communication:(OCCommunication *)communication success:(void (^)(int64_t length, NSString *etag, NSDate *date))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
 - (NSURLSessionTask *)uploadFileNameServerUrl:(NSString *)fileNameServerUrl fileNameLocalPath:(NSString *)fileNameLocalPath communication:(OCCommunication *)communication success:(void(^)(NSString *fileID, NSString *etag, NSDate *date))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
 - (void)downloadThumbnailWithDimOfThumbnail:(NSString *)dimOfThumbnail fileName:(NSString *)fileName fileNameLocal:(NSString *)fileNameLocal success:(void (^)(void))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
 - (void)readFolderWithServerUrl:(NSString *)serverUrl depth:(NSString *)depth account:(NSString *)account success:(void(^)(NSArray *metadatas, tableMetadata *metadataFolder, NSString *directoryID))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;

+ 17 - 2
iOSClient/Networking/OCNetworking.m

@@ -132,7 +132,7 @@
 #pragma mark ===== download =====
 #pragma --------------------------------------------------------------------------------------------
 
-- (NSURLSessionTask *)downloadFileNameServerUrl:(NSString *)fileNameServerUrl fileNameLocalPath:(NSString *)fileNameLocalPath communication:(OCCommunication *)communication success:(void (^)(int64_t length))success failure:(void (^)(NSString *message, NSInteger errorCode))failure
+- (NSURLSessionTask *)downloadFileNameServerUrl:(NSString *)fileNameServerUrl fileNameLocalPath:(NSString *)fileNameLocalPath communication:(OCCommunication *)communication success:(void (^)(int64_t length, NSString *etag, NSDate *date))success failure:(void (^)(NSString *message, NSInteger errorCode))failure
 {
     [communication setCredentialsWithUser:_activeUser andUserID:_activeUserID andPassword:_activePassword];
     [communication setUserAgent:[CCUtility getUserAgent]];
@@ -142,6 +142,12 @@
     } successRequest:^(NSURLResponse *response, NSURL *filePath) {
 
         int64_t totalUnitCount = 0;
+        NSDate *date = [NSDate date];
+        NSDateFormatter *dateFormatter = [NSDateFormatter new];
+        NSLocale *enUSPOSIXLocale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
+        [dateFormatter setLocale:enUSPOSIXLocale];
+        [dateFormatter setDateFormat:@"EEE, dd MMM y HH:mm:ss zzz"];
+        NSError *error;
         
         NSDictionary *fields = [(NSHTTPURLResponse*)response allHeaderFields];
 
@@ -149,8 +155,17 @@
         if(contentLength) {
             totalUnitCount = (int64_t) [contentLength longLongValue];
         }
+        NSString *etag = [CCUtility removeForbiddenCharactersFileSystem:[fields objectForKey:@"OC-ETag"]];
+        NSString *dateString = [fields objectForKey:@"Date"];
+        if (dateString) {
+            if (![dateFormatter getObjectValue:&date forString:dateString range:nil error:&error]) {
+                date = [NSDate date];
+            }
+        } else {
+            date = [NSDate date];
+        }
         
-        success(totalUnitCount);
+        success(totalUnitCount, etag, date);
         
     } failureRequest:^(NSURLResponse *response, NSError *error) {
         

+ 1 - 1
iOSClient/Utility/CCExifGeo.m

@@ -112,7 +112,7 @@
 
     // Wite data EXIF in TableLocalFile
     if (tiff || gps)
-        [[NCManageDatabase sharedInstance] setLocalFileWithFileID:metadata.fileID date:nil exifDate:date exifLatitude:stringLatitude exifLongitude:stringLongitude fileName:nil];
+        [[NCManageDatabase sharedInstance] setLocalFileWithFileID:metadata.fileID date:nil exifDate:date exifLatitude:stringLatitude exifLongitude:stringLongitude fileName:nil etag:nil etagFPE:nil];
     
     CFRelease(originalSource);
     CFRelease(imageProperties);