Explorar o código

use own route for NC13 and parse status.php for NC12

tobiaskaminsky %!s(int64=7) %!d(string=hai) anos
pai
achega
626f2b68a2

+ 1 - 1
build.gradle

@@ -191,7 +191,7 @@ android {
 dependencies {
     /// dependencies for app building
     implementation 'com.android.support:multidex:1.0.2'
-    implementation 'com.github.nextcloud:android-library:1.0.32'
+    implementation 'com.github.nextcloud:android-library:nc13-SNAPSHOT'
     versionDevImplementation 'com.github.nextcloud:android-library:1.0.32'
     implementation "com.android.support:support-v4:${supportLibraryVersion}"
     implementation "com.android.support:design:${supportLibraryVersion}"

+ 3 - 3
src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java

@@ -352,10 +352,10 @@ public class ThumbnailsCacheManager {
                         }
                     }
                 } else {
-                    if (!ConnectivityUtils.isInternetWalled(MainApp.getAppContext())) {
-                        previewImageFragment.setErrorPreviewMessage();
-                    } else {
+                    if (ConnectivityUtils.isInternetWalled(MainApp.getAppContext())) {
                         previewImageFragment.setNoConnectionErrorMessage();
+                    } else {
+                        previewImageFragment.setErrorPreviewMessage();
                     }
                 }
             }

+ 43 - 21
src/main/java/com/owncloud/android/utils/ConnectivityUtils.java

@@ -25,45 +25,67 @@ package com.owncloud.android.utils;
 
 import android.accounts.Account;
 import android.content.Context;
-import android.util.Log;
 
 import com.evernote.android.job.JobRequest;
 import com.evernote.android.job.util.Device;
-import com.owncloud.android.MainApp;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.lib.common.OwnCloudAccount;
+import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.lib.resources.status.OwnCloudVersion;
 
-import org.apache.commons.httpclient.util.HttpURLConnection;
+import org.json.JSONException;
+import org.json.JSONObject;
 
 import java.io.IOException;
 import java.net.URL;
 
+import javax.net.ssl.HttpsURLConnection;
+
 public class ConnectivityUtils {
 
     private final static String TAG = ConnectivityUtils.class.getName();
 
     public static boolean isInternetWalled(Context context) {
-        Account currentAccount = AccountUtils.getCurrentOwnCloudAccount(context);
-        try {
-            OwnCloudAccount ocAccount = null;
-            if (currentAccount != null && !Device.getNetworkType(context).equals(JobRequest.NetworkType.ANY)) {
-                ocAccount = new OwnCloudAccount(currentAccount, context);
-                try {
-                    HttpURLConnection urlc = (HttpURLConnection)
-                            (new URL(ocAccount.getBaseUri() + "/204")
-                                    .openConnection());
-                    urlc.setRequestProperty("User-Agent", MainApp.getUserAgent());
-                    urlc.setRequestProperty("Connection", "close");
-                    urlc.setConnectTimeout(1500);
-                    urlc.connect();
-                    return !(urlc.getResponseCode() == 204 &&
-                            urlc.getContentLength() == 0);
-                } catch (IOException e) {
-                    Log.e(TAG, "Error checking internet connection", e);
+        if (!Device.getNetworkType(context).equals(JobRequest.NetworkType.ANY)) {
+            try {
+                Account account = AccountUtils.getCurrentOwnCloudAccount(context);
+                OwnCloudAccount ocAccount = new OwnCloudAccount(account, context);
+                OwnCloudVersion serverVersion = AccountUtils.getServerVersion(account);
+
+                URL url;
+                if (serverVersion.compareTo(OwnCloudVersion.nextcloud_13) > 0) {
+                    url = new URL(ocAccount.getBaseUri() + "/index.php/204");
+                } else {
+                    url = new URL(ocAccount.getBaseUri() + "/status.php");
+                }
+                HttpsURLConnection urlc = (HttpsURLConnection) (url.openConnection());
+                urlc.setRequestProperty("User-Agent", "Android");
+                urlc.setRequestProperty("Connection", "close");
+                urlc.setConnectTimeout(2500);
+                urlc.connect();
+
+                if (serverVersion.compareTo(OwnCloudVersion.nextcloud_13) > 0) {
+                    return !(urlc.getResponseCode() == 204 && urlc.getContentLength() == 0);
+                } else {
+                    if (urlc.getResponseCode() == 200) {
+                        // try parsing json to verify response
+                        try {
+                            new JSONObject(urlc.getResponseMessage());
+                            return false;
+                        } catch (JSONException e) {
+                            return true;
+                        }
+                    } else {
+                        return true;
+                    }
                 }
+            } catch (IOException e) {
+                Log_OC.e(TAG, "Error checking internet connection", e);
+            } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) {
+                Log_OC.e(TAG, "Account not found", e);
             }
         } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) {
-            Log.d(TAG, "No account found");
+            Log_OC.d(TAG, "No account found");
         }
 
         return true;

+ 1 - 5
src/main/java/com/owncloud/android/utils/FilesSyncHelper.java

@@ -231,11 +231,7 @@ public class FilesSyncHelper {
 
         if (!Device.getNetworkType(context).equals(JobRequest.NetworkType.ANY) &&
                 !ConnectivityUtils.isInternetWalled(context)) {
-            uploadRequester.retryFailedUploads(
-                    context,
-                    null,
-                    null
-            );
+            uploadRequester.retryFailedUploads(context, null, null);
         }
     }