|
@@ -727,106 +727,96 @@
|
|
|
#pragma mark ===== Search =====
|
|
|
#pragma --------------------------------------------------------------------------------------------
|
|
|
|
|
|
-- (void)search
|
|
|
+- (void)searchWithAccount:(NSString *)account fileName:(NSString *)fileName serverUrl:(NSString *)serverUrl contentType:(NSArray *)contentType date:(NSDate *)date depth:(NSString *)depth completion:(void(^)(NSString *account, NSArray *metadatas, NSString *message, NSInteger errorCode))completion
|
|
|
{
|
|
|
+ tableAccount *tableAccount = [[NCManageDatabase sharedInstance] getAccountWithPredicate:[NSPredicate predicateWithFormat:@"account == %@", account]];
|
|
|
+ if (tableAccount == nil) {
|
|
|
+ completion(account, nil, NSLocalizedString(@"_error_user_not_available_", nil), k_CCErrorUserNotAvailble);
|
|
|
+ }
|
|
|
+
|
|
|
OCCommunication *communication = [CCNetworking sharedNetworking].sharedOCCommunication;
|
|
|
|
|
|
- [communication setCredentialsWithUser:_activeUser andUserID:_activeUserID andPassword:_activePassword];
|
|
|
+ [communication setCredentialsWithUser:tableAccount.user andUserID:tableAccount.userID andPassword:tableAccount.password];
|
|
|
[communication setUserAgent:[CCUtility getUserAgent]];
|
|
|
-
|
|
|
- NSString *path = [_activeUrl stringByAppendingString:k_dav];
|
|
|
- NSString *folder = [_metadataNet.serverUrl stringByReplacingOccurrencesOfString:[CCUtility getHomeServerUrlActiveUrl:_activeUrl] withString:@""];
|
|
|
+
|
|
|
+ NSString *path = [tableAccount.url stringByAppendingString:k_dav];
|
|
|
+ NSString *folder = [serverUrl stringByReplacingOccurrencesOfString:[CCUtility getHomeServerUrlActiveUrl:tableAccount.url] withString:@""];
|
|
|
NSString *dateLastModified;
|
|
|
|
|
|
- if (_metadataNet.date) {
|
|
|
+ if (date) {
|
|
|
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
|
|
|
NSLocale *enUSPOSIXLocale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
|
|
|
[dateFormatter setLocale:enUSPOSIXLocale];
|
|
|
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];
|
|
|
-
|
|
|
- dateLastModified = [dateFormatter stringFromDate:_metadataNet.date];
|
|
|
- }
|
|
|
-
|
|
|
- [communication search:path folder:folder fileName: [NSString stringWithFormat:@"%%%@%%", _metadataNet.fileName] depth:_metadataNet.depth dateLastModified:dateLastModified contentType:_metadataNet.contentType withUserSessionToken:nil onCommunication:communication successRequest:^(NSHTTPURLResponse *response, NSArray *items, NSString *redirectedServer, NSString *token) {
|
|
|
|
|
|
- // Test active account
|
|
|
- tableAccount *recordAccount = [[NCManageDatabase sharedInstance] getAccountActive];
|
|
|
- if (![recordAccount.account isEqualToString:_metadataNet.account]) {
|
|
|
- if ([self.delegate respondsToSelector:@selector(searchSuccessFailure:metadatas:message:errorCode:)])
|
|
|
- [self.delegate searchSuccessFailure:_metadataNet metadatas:nil message:NSLocalizedString(@"_error_user_not_available_", nil) errorCode:k_CCErrorUserNotAvailble];
|
|
|
-
|
|
|
- [self complete];
|
|
|
- return;
|
|
|
- }
|
|
|
+ dateLastModified = [dateFormatter stringFromDate:date];
|
|
|
+ }
|
|
|
+
|
|
|
+ [communication search:path folder:folder fileName: [NSString stringWithFormat:@"%%%@%%", fileName] depth:depth dateLastModified:dateLastModified contentType:contentType withUserSessionToken:nil onCommunication:communication successRequest:^(NSHTTPURLResponse *response, NSArray *items, NSString *redirectedServer, NSString *token) {
|
|
|
|
|
|
NSMutableArray *metadatas = [NSMutableArray new];
|
|
|
BOOL showHiddenFiles = [CCUtility getShowHiddenFiles];
|
|
|
-
|
|
|
+
|
|
|
NSString *autoUploadFileName = [[NCManageDatabase sharedInstance] getAccountAutoUploadFileName];
|
|
|
- NSString *autoUploadDirectory = [[NCManageDatabase sharedInstance] getAccountAutoUploadDirectory:_activeUrl];
|
|
|
-
|
|
|
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
|
|
|
+ NSString *autoUploadDirectory = [[NCManageDatabase sharedInstance] getAccountAutoUploadDirectory:tableAccount.url];
|
|
|
|
|
|
- for(OCFileDto *itemDto in items) {
|
|
|
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
|
|
|
|
|
|
+ for (OCFileDto *itemDto in items) {
|
|
|
+
|
|
|
NSString *serverUrl;
|
|
|
BOOL isFolderEncrypted;
|
|
|
-
|
|
|
+
|
|
|
NSString *fileName = [itemDto.fileName stringByReplacingOccurrencesOfString:@"/" withString:@""];
|
|
|
-
|
|
|
+
|
|
|
// Skip hidden files
|
|
|
if (fileName.length > 0) {
|
|
|
if (!showHiddenFiles && [[fileName substringToIndex:1] isEqualToString:@"."])
|
|
|
continue;
|
|
|
} else
|
|
|
continue;
|
|
|
-
|
|
|
- NSRange firstInstance = [itemDto.filePath rangeOfString:[NSString stringWithFormat:@"%@/files/%@", k_dav, _activeUserID]];
|
|
|
+
|
|
|
+ NSRange firstInstance = [itemDto.filePath rangeOfString:[NSString stringWithFormat:@"%@/files/%@", k_dav, tableAccount.userID]];
|
|
|
NSString *serverPath = [itemDto.filePath substringFromIndex:firstInstance.length+firstInstance.location+1];
|
|
|
if ([serverPath hasSuffix:@"/"]) serverPath = [serverPath substringToIndex:[serverPath length] - 1];
|
|
|
- serverUrl = [CCUtility stringAppendServerUrl:[_activeUrl stringByAppendingString:k_webDAV] addFileName:serverPath];
|
|
|
+ serverUrl = [CCUtility stringAppendServerUrl:[tableAccount.url stringByAppendingString:k_webDAV] addFileName:serverPath];
|
|
|
|
|
|
if (itemDto.isDirectory) {
|
|
|
- (void)[[NCManageDatabase sharedInstance] addDirectoryWithEncrypted:itemDto.isEncrypted favorite:itemDto.isFavorite fileID:itemDto.ocId permissions:itemDto.permissions serverUrl:[NSString stringWithFormat:@"%@/%@", serverUrl, fileName] account:_metadataNet.account];
|
|
|
+ (void)[[NCManageDatabase sharedInstance] addDirectoryWithEncrypted:itemDto.isEncrypted favorite:itemDto.isFavorite fileID:itemDto.ocId permissions:itemDto.permissions serverUrl:[NSString stringWithFormat:@"%@/%@", serverUrl, fileName] account:account];
|
|
|
}
|
|
|
|
|
|
- isFolderEncrypted = [CCUtility isFolderEncrypted:serverUrl account:_metadataNet.account];
|
|
|
+ isFolderEncrypted = [CCUtility isFolderEncrypted:serverUrl account:account];
|
|
|
|
|
|
- [metadatas addObject:[CCUtility trasformedOCFileToCCMetadata:itemDto fileName:itemDto.fileName serverUrl:serverUrl autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory activeAccount:_metadataNet.account isFolderEncrypted:isFolderEncrypted]];
|
|
|
+ [metadatas addObject:[CCUtility trasformedOCFileToCCMetadata:itemDto fileName:itemDto.fileName serverUrl:serverUrl autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory activeAccount:account isFolderEncrypted:isFolderEncrypted]];
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
|
- if ([self.delegate respondsToSelector:@selector(searchSuccessFailure:metadatas:message:errorCode:)])
|
|
|
- [self.delegate searchSuccessFailure:_metadataNet metadatas:metadatas message:nil errorCode:0];
|
|
|
+ completion(account, metadatas, nil, 0);
|
|
|
});
|
|
|
-
|
|
|
});
|
|
|
|
|
|
- [self complete];
|
|
|
-
|
|
|
} failureRequest:^(NSHTTPURLResponse *response, NSError *error, NSString *token, NSString *redirectedServer) {
|
|
|
|
|
|
+ NSString *message = @"";
|
|
|
NSInteger errorCode = response.statusCode;
|
|
|
if (errorCode == 0 || (errorCode >= 200 && errorCode < 300))
|
|
|
errorCode = error.code;
|
|
|
-
|
|
|
+
|
|
|
// Error
|
|
|
- if ([self.delegate respondsToSelector:@selector(searchSuccessFailure:metadatas:message:errorCode:)]) {
|
|
|
-
|
|
|
- if (errorCode == 503)
|
|
|
- [self.delegate searchSuccessFailure:_metadataNet metadatas:nil message:NSLocalizedString(@"_server_error_retry_", nil) errorCode:errorCode];
|
|
|
- else
|
|
|
- [self.delegate searchSuccessFailure:_metadataNet metadatas:nil message:[error.userInfo valueForKey:@"NSLocalizedDescription"] errorCode:errorCode];
|
|
|
+ if (errorCode == 503) {
|
|
|
+ message = NSLocalizedString(@"_server_error_retry_", nil);
|
|
|
+ } else {
|
|
|
+ message = [error.userInfo valueForKey:@"NSLocalizedDescription"];
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// Request trusted certificated
|
|
|
if ([error code] == NSURLErrorServerCertificateUntrusted && self.delegate)
|
|
|
[[CCCertificate sharedManager] presentViewControllerCertificateWithTitle:[error localizedDescription] viewController:(UIViewController *)self.delegate delegate:self];
|
|
|
|
|
|
- [self complete];
|
|
|
+ completion(account, nil, message, errorCode);
|
|
|
}];
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
#pragma --------------------------------------------------------------------------------------------
|
|
|
#pragma mark ===== Setting Favorite =====
|
|
|
#pragma --------------------------------------------------------------------------------------------
|