Marino Faggiana 6 жил өмнө
parent
commit
a093907055

+ 6 - 6
iOSClient/Networking/NCService.swift

@@ -35,7 +35,7 @@ class NCService: NSObject, OCNetworkingDelegate {
     //MARK: -
     //MARK: Start Services API NC
     
-    @objc func startRequestServicesServer() {
+    @objc public func startRequestServicesServer() {
    
         if (appDelegate.activeAccount == nil || appDelegate.activeAccount.count == 0 || appDelegate.maintenanceMode == true) {
             return
@@ -47,9 +47,9 @@ class NCService: NSObject, OCNetworkingDelegate {
     }
 
     //MARK: -
-    //MARK: Request Service API NC
+    //MARK: Internal request Service API NC
     
-    @objc func requestServerCapabilities() {
+    @objc private func requestServerCapabilities() {
         
         if (appDelegate.activeAccount == nil || appDelegate.activeAccount.count == 0 || appDelegate.maintenanceMode == true) {
             return
@@ -63,7 +63,7 @@ class NCService: NSObject, OCNetworkingDelegate {
         appDelegate.addNetworkingOperationQueue(appDelegate.netQueue, delegate: self, metadataNet: metadataNet)
     }
     
-    @objc func requestUserProfile() {
+    @objc private func requestUserProfile() {
         
         if (appDelegate.activeAccount == nil || appDelegate.activeAccount.count == 0 || appDelegate.maintenanceMode == true) {
             return
@@ -77,7 +77,7 @@ class NCService: NSObject, OCNetworkingDelegate {
         appDelegate.addNetworkingOperationQueue(appDelegate.netQueue, delegate: self, metadataNet: metadataNet)
     }
     
-    @objc func requestActivityServer() {
+    @objc private func requestActivityServer() {
         
         if (appDelegate.activeAccount == nil || appDelegate.activeAccount.count == 0 || appDelegate.maintenanceMode == true) {
             return
@@ -91,7 +91,7 @@ class NCService: NSObject, OCNetworkingDelegate {
         appDelegate.addNetworkingOperationQueue(appDelegate.netQueue, delegate: self, metadataNet: metadataNet)
     }
     
-    @objc func middlewarePing() {
+    @objc public func middlewarePing() {
         
         if (appDelegate.activeAccount == nil || appDelegate.activeAccount.count == 0 || appDelegate.maintenanceMode == true) {
             return

+ 2 - 1
iOSClient/Networking/OCNetworking.h

@@ -32,7 +32,7 @@
 
 @protocol OCNetworkingDelegate;
 
-@interface OCnetworking : NSOperation <CCNetworkingDelegate>
+@interface OCnetworking : NSOperation <CCNetworkingDelegate, NSURLSessionDelegate>
 
 - (id)initWithDelegate:(id <OCNetworkingDelegate>)delegate metadataNet:(CCMetadataNet *)metadataNet withUser:(NSString *)withUser withUserID:(NSString *)withUserID withPassword:(NSString *)withPassword withUrl:(NSString *)withUrl;
 
@@ -43,6 +43,7 @@
 @property (nonatomic, assign) BOOL isFinished;
 
 - (void)checkServer:(NSString *)serverUrl success:(void (^)(void))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
+- (void)serverStatus:(NSString *)serverUrl success:(void(^)(NSString *serverProductName, NSInteger versionMajor, NSInteger versionMicro, NSInteger versionMinor))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;
 

+ 76 - 1
iOSClient/Networking/OCNetworking.m

@@ -129,7 +129,7 @@
 }
 
 #pragma --------------------------------------------------------------------------------------------
-#pragma mark ===== Check Server =====
+#pragma mark ===== Server =====
 #pragma --------------------------------------------------------------------------------------------
 
 - (void)checkServer:(NSString *)serverUrl success:(void (^)(void))success failure:(void (^)(NSString *message, NSInteger errorCode))failure
@@ -161,6 +161,81 @@
     }];
 }
 
+- (void)serverStatus:(NSString *)serverUrl success:(void(^)(NSString *serverProductName, NSInteger versionMajor, NSInteger versionMicro, NSInteger versionMinor))success failure:(void (^)(NSString *message, NSInteger errorCode))failure
+{
+     NSString *urlTest = [serverUrl stringByAppendingString:k_serverStatus];
+    
+    // Remove stored cookies
+    NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
+    for (NSHTTPCookie *cookie in [storage cookies])
+    {
+        [storage deleteCookie:cookie];
+    }
+    
+    NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlTest] cachePolicy:0 timeoutInterval:20.0];
+    [request addValue:[CCUtility getUserAgent] forHTTPHeaderField:@"User-Agent"];
+    [request addValue:@"true" forHTTPHeaderField:@"OCS-APIRequest"];
+    
+    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
+    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
+    
+    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) {
+        
+        if (error) {
+            
+            NSString *message;
+            NSInteger errorCode;
+            
+            NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
+            errorCode = httpResponse.statusCode;
+            
+            if (errorCode == 0 || (errorCode >= 200 && errorCode < 300))
+                errorCode = error.code;
+            
+            // Error
+            if (errorCode == 503)
+                message = NSLocalizedStringFromTable(@"_server_error_retry_", @"Error", nil);
+            else
+                message = [error.userInfo valueForKey:@"NSLocalizedDescription"];
+            
+            failure(message, errorCode);
+            
+        } else {
+            
+            NSString *serverProductName = @"";
+            NSString *serverVersion = @"0.0.0";
+            NSString *serverVersionString = @"0.0.0";
+            
+            NSInteger versionMajor = 0;
+            NSInteger versionMicro = 0;
+            NSInteger versionMinor = 0;
+            
+            NSError *error;
+            NSDictionary *jsongParsed = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
+            
+            if (error) {
+                failure(error.description, error.code);
+                return;
+            }
+            
+            serverProductName = [[jsongParsed valueForKey:@"productname"] lowercaseString];
+            serverVersion = [jsongParsed valueForKey:@"version"];
+            serverVersionString = [jsongParsed valueForKey:@"versionstring"];
+            
+            NSArray *arrayVersion = [serverVersionString componentsSeparatedByString:@"."];
+            if (arrayVersion.count >= 3) {
+                versionMajor = [arrayVersion[0] integerValue];
+                versionMicro = [arrayVersion[1] integerValue];
+                versionMinor = [arrayVersion[2] integerValue];
+            }
+            
+            success(serverProductName, versionMajor, versionMicro, versionMinor);
+        }
+    }];
+    
+    [task resume];
+}
+
 #pragma --------------------------------------------------------------------------------------------
 #pragma mark ===== download =====
 #pragma --------------------------------------------------------------------------------------------