소스 검색

add API lock unlock e2e

Marino Faggiana 7 년 전
부모
커밋
d075558788

+ 3 - 0
iOSClient/Library/OCCommunicationLib/OCCommunication.m

@@ -2254,6 +2254,9 @@
     
     serverPath = [serverPath stringByAppendingString:k_url_client_side_encryption];
     serverPath = [NSString stringWithFormat:@"%@/lock/%@", serverPath, fileID];
+    if (token) {
+        serverPath = [NSString stringWithFormat:@"%@?token=%@", serverPath, token];
+    }
     serverPath = [serverPath encodeString:NSUTF8StringEncoding];
     
     OCWebDAVClient *request = [OCWebDAVClient new];

+ 1 - 0
iOSClient/Networking/CCNetworking.h

@@ -123,6 +123,7 @@
 @property NSInteger sharePermission;
 @property long size;
 @property NSInteger taskStatus;
+@property (nonatomic, strong) NSString *token;
 
 - (id)initWithAccount:(NSString *)withAccount;
 - (id)copyWithZone:(NSZone *)zone;

+ 1 - 0
iOSClient/Networking/CCNetworking.m

@@ -1564,6 +1564,7 @@
     [metadataNet setSharePermission: self.sharePermission];
     [metadataNet setSize: self.size];
     [metadataNet setTaskStatus: self.taskStatus];
+    [metadataNet setToken: self.token];
     
     return metadataNet;
 }

+ 6 - 0
iOSClient/Networking/OCNetworking.h

@@ -148,6 +148,12 @@
 - (void)deletemarkEndToEndFolderEncryptedSuccess:(CCMetadataNet *)metadataNet;
 - (void)deletemarkEndToEndFolderEncryptedFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode;
 
+- (void)lockEndToEndFolderEncryptedSuccess:(CCMetadataNet *)metadataNet;
+- (void)lockEndToEndFolderEncryptedFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode;
+
+- (void)unlockEndToEndFolderEncryptedSuccess:(CCMetadataNet *)metadataNet;
+- (void)unlockEndToEndFolderEncryptedFailure:(CCMetadataNet *)metadataNet message:(NSString *)message errorCode:(NSInteger)errorCode;
+
 @end
 
 @interface OCURLSessionManager : AFURLSessionManager

+ 71 - 2
iOSClient/Networking/OCNetworking.m

@@ -1926,7 +1926,7 @@
     
     [communication markEndToEndFolderEncrypted:[_activeUrl stringByAppendingString:@"/"] fileID:_metadataNet.fileID onCommunication:communication successRequest:^(NSHTTPURLResponse *response, NSString *redirectedServer) {
         
-        // 200 ok: body contain the public key
+        // 200 ok
         
         if ([self.delegate respondsToSelector:@selector(markEndToEndFolderEncryptedSuccess:)])
             [self.delegate markEndToEndFolderEncryptedSuccess:_metadataNet];
@@ -1960,7 +1960,7 @@
     
     [communication deletemarkEndToEndFolderEncrypted:[_activeUrl stringByAppendingString:@"/"] fileID:_metadataNet.fileID onCommunication:communication successRequest:^(NSHTTPURLResponse *response, NSString *redirectedServer) {
         
-        // 200 ok: body contain the public key
+        // 200 ok
         
         if ([self.delegate respondsToSelector:@selector(deletemarkEndToEndFolderEncryptedSuccess:)])
             [self.delegate deletemarkEndToEndFolderEncryptedSuccess:_metadataNet];
@@ -1985,6 +1985,75 @@
     }];
 }
 
+- (void)lockEndToEndFolderEncrypted
+{
+    OCCommunication *communication = [CCNetworking sharedNetworking].sharedOCCommunication;
+    
+    [communication setCredentialsWithUser:_activeUser andUserID:_activeUserID andPassword:_activePassword];
+    [communication setUserAgent:[CCUtility getUserAgent]];
+    
+    [communication lockEndToEndFolderEncrypted:[_activeUrl stringByAppendingString:@"/"] fileID:_metadataNet.fileID token:_metadataNet.token onCommunication:communication successRequest:^(NSHTTPURLResponse *response, NSString *token, NSString *redirectedServer) {
+        
+        // 200 ok: file locked successful
+        _metadataNet.token = token;
+
+        if ([self.delegate respondsToSelector:@selector(lockEndToEndFolderEncryptedSuccess:)])
+            [self.delegate lockEndToEndFolderEncryptedSuccess:_metadataNet];
+        
+        [self complete];
+        
+    } failureRequest:^(NSHTTPURLResponse *response, NSError *error, NSString *redirectedServer) {
+        
+        NSInteger errorCode = response.statusCode;
+        if (errorCode == 0)
+            errorCode = error.code;
+        
+        // Error
+        if ([self.delegate respondsToSelector:@selector(lockEndToEndFolderEncryptedFailure:message:errorCode:)])
+            [self.delegate lockEndToEndFolderEncryptedFailure:_metadataNet message:[error.userInfo valueForKey:@"NSLocalizedDescription"] errorCode:errorCode];
+        
+        // Request trusted certificated
+        if ([error code] == NSURLErrorServerCertificateUntrusted)
+            [[CCCertificate sharedManager] presentViewControllerCertificateWithTitle:[error localizedDescription] viewController:(UIViewController *)self.delegate delegate:self];
+        
+        [self complete];
+    }];
+}
+
+- (void)unlockEndToEndFolderEncrypted
+{
+    OCCommunication *communication = [CCNetworking sharedNetworking].sharedOCCommunication;
+    
+    [communication setCredentialsWithUser:_activeUser andUserID:_activeUserID andPassword:_activePassword];
+    [communication setUserAgent:[CCUtility getUserAgent]];
+    
+    [communication unlockEndToEndFolderEncrypted:[_activeUrl stringByAppendingString:@"/"] fileID:_metadataNet.fileID onCommunication:communication successRequest:^(NSHTTPURLResponse *response, NSString *redirectedServer) {
+        
+        // 200 ok: file unlocked successful
+        
+        if ([self.delegate respondsToSelector:@selector(unlockEndToEndFolderEncryptedSuccess:)])
+            [self.delegate unlockEndToEndFolderEncryptedSuccess:_metadataNet];
+        
+        [self complete];
+        
+    } failureRequest:^(NSHTTPURLResponse *response, NSError *error, NSString *redirectedServer) {
+        
+        NSInteger errorCode = response.statusCode;
+        if (errorCode == 0)
+            errorCode = error.code;
+        
+        // Error
+        if ([self.delegate respondsToSelector:@selector(unlockEndToEndFolderEncryptedFailure:message:errorCode:)])
+            [self.delegate unlockEndToEndFolderEncryptedFailure:_metadataNet message:[error.userInfo valueForKey:@"NSLocalizedDescription"] errorCode:errorCode];
+        
+        // Request trusted certificated
+        if ([error code] == NSURLErrorServerCertificateUntrusted)
+            [[CCCertificate sharedManager] presentViewControllerCertificateWithTitle:[error localizedDescription] viewController:(UIViewController *)self.delegate delegate:self];
+        
+        [self complete];
+    }];
+}
+
 @end
 
 #pragma --------------------------------------------------------------------------------------------