|
@@ -24,22 +24,24 @@
|
|
|
package com.owncloud.android.utils;
|
|
|
|
|
|
import android.accounts.Account;
|
|
|
+import android.accounts.AuthenticatorException;
|
|
|
+import android.accounts.OperationCanceledException;
|
|
|
import android.content.Context;
|
|
|
|
|
|
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.OwnCloudClient;
|
|
|
+import com.owncloud.android.lib.common.OwnCloudClientFactory;
|
|
|
import com.owncloud.android.lib.common.utils.Log_OC;
|
|
|
import com.owncloud.android.lib.resources.status.OwnCloudVersion;
|
|
|
|
|
|
+import org.apache.commons.httpclient.methods.GetMethod;
|
|
|
import org.json.JSONException;
|
|
|
import org.json.JSONObject;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
-import java.net.HttpURLConnection;
|
|
|
-import java.net.URL;
|
|
|
|
|
|
public class ConnectivityUtils {
|
|
|
|
|
@@ -53,27 +55,28 @@ public class ConnectivityUtils {
|
|
|
OwnCloudAccount ocAccount = new OwnCloudAccount(account, context);
|
|
|
OwnCloudVersion serverVersion = AccountUtils.getServerVersion(account);
|
|
|
|
|
|
- URL url;
|
|
|
+ String url;
|
|
|
if (serverVersion.compareTo(OwnCloudVersion.nextcloud_13) > 0) {
|
|
|
- url = new URL(ocAccount.getBaseUri() + "/index.php/204");
|
|
|
+ url = ocAccount.getBaseUri() + "/index.php/204";
|
|
|
} else {
|
|
|
- url = new URL(ocAccount.getBaseUri() + "/status.php");
|
|
|
+ url = ocAccount.getBaseUri() + "/status.php";
|
|
|
}
|
|
|
-
|
|
|
- HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
|
|
|
- urlc.setRequestProperty("User-Agent", MainApp.getUserAgent());
|
|
|
- urlc.setRequestProperty("Connection", "close");
|
|
|
- urlc.setConnectTimeout(2500);
|
|
|
- urlc.connect();
|
|
|
|
|
|
+ GetMethod get = new GetMethod(url);
|
|
|
+ OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(account, context);
|
|
|
+
|
|
|
+ int status = client.executeMethod(get);
|
|
|
+
|
|
|
if (serverVersion.compareTo(OwnCloudVersion.nextcloud_13) > 0) {
|
|
|
- return !(urlc.getResponseCode() == 204 && urlc.getContentLength() == 0);
|
|
|
+ return !(status == 204 && get.getResponseContentLength() == -1);
|
|
|
} else {
|
|
|
- if (urlc.getResponseCode() == 200) {
|
|
|
- // try parsing json to verify response
|
|
|
+ if (status == 200) {
|
|
|
try {
|
|
|
- new JSONObject(urlc.getResponseMessage());
|
|
|
- return false;
|
|
|
+ // try parsing json to verify response
|
|
|
+ // check if json contains maintenance and it should be false
|
|
|
+
|
|
|
+ String json = get.getResponseBodyAsString();
|
|
|
+ return new JSONObject(json).getBoolean("maintenance");
|
|
|
} catch (JSONException e) {
|
|
|
return true;
|
|
|
}
|
|
@@ -86,6 +89,10 @@ public class ConnectivityUtils {
|
|
|
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 (OperationCanceledException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } catch (AuthenticatorException e) {
|
|
|
+ e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
|