get oc server version on synchronization
authorBartek Przybylski <bart.p.pl@gmail.com>
Wed, 10 Oct 2012 20:52:26 +0000 (22:52 +0200)
committerBartek Przybylski <bart.p.pl@gmail.com>
Wed, 10 Oct 2012 20:52:26 +0000 (22:52 +0200)
src/com/owncloud/android/syncadapter/FileSyncAdapter.java
src/eu/alefzero/webdav/WebdavClient.java

index 0088899..df27419 100644 (file)
@@ -26,11 +26,15 @@ import org.apache.http.HttpStatus;
 import org.apache.jackrabbit.webdav.DavException;\r
 import org.apache.jackrabbit.webdav.MultiStatus;\r
 import org.apache.jackrabbit.webdav.client.methods.PropFindMethod;\r
+import org.json.JSONObject;\r
 \r
+import com.owncloud.android.AccountUtils;\r
 import com.owncloud.android.R;\r
+import com.owncloud.android.authenticator.AccountAuthenticator;\r
 import com.owncloud.android.datamodel.FileDataStorageManager;\r
 import com.owncloud.android.datamodel.OCFile;\r
 import com.owncloud.android.files.services.FileDownloader;\r
+import com.owncloud.android.utils.OwnCloudVersion;\r
 \r
 import android.accounts.Account;\r
 import android.app.Notification;\r
@@ -94,6 +98,8 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
         Log.d(TAG, "syncing owncloud account " + account.name);\r
 \r
         sendStickyBroadcast(true, null);  // message to signal the start to the UI\r
+        \r
+        updateOCVersion();\r
 \r
         String uri = getUri().toString();\r
         PropFindMethod query = null;\r
@@ -342,5 +348,32 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
         }\r
     }\r
 \r
-    \r
+    private void updateOCVersion() {\r
+        String statUrl = getAccountManager().getUserData(getAccount(), AccountAuthenticator.KEY_OC_BASE_URL);\r
+        statUrl += AccountUtils.STATUS_PATH;\r
+        \r
+        try {\r
+            String result = getClient().getResultAsString(statUrl);\r
+            if (result != null) {\r
+                try {\r
+                    JSONObject json = new JSONObject(result);\r
+                    if (json != null && json.getString("version") != null) {\r
+                        OwnCloudVersion ocver = new OwnCloudVersion(json.getString("version"));\r
+                        if (ocver.isVersionValid()) {\r
+                            getAccountManager().setUserData(getAccount(), AccountAuthenticator.KEY_OC_VERSION, ocver.toString());\r
+                            Log.d(TAG, "Got new OC version " + ocver.toString());\r
+                        } else {\r
+                            Log.w(TAG, "Invalid version number received from server: " + json.getString("version"));\r
+                        }\r
+                    }\r
+                } catch (Throwable e) {\r
+                    Log.w(TAG, "Couldn't parse version response", e);\r
+                }\r
+            } else {\r
+                Log.w(TAG, "Problem while getting ocversion from server");\r
+            }\r
+        } catch (Exception e) {\r
+            Log.e(TAG, "ASDASD", e);\r
+        }\r
+    }\r
 }\r
index a451b3e..6f98f50 100644 (file)
@@ -336,5 +336,20 @@ public class WebdavClient extends HttpClient {
     public Uri getBaseUri() {\r
         return mUri;\r
     }\r
+\r
+    public String getResultAsString(String targetUrl) {\r
+        String getResult = null;\r
+        try {\r
+            GetMethod get = new GetMethod(targetUrl);\r
+            int status = executeMethod(get);\r
+            if (status == HttpStatus.SC_OK) {\r
+                getResult = get.getResponseBodyAsString();\r
+            }\r
+        } catch (Exception e) {\r
+            Log.e(TAG, "Error while getting requested file: " + targetUrl, e);\r
+            getResult = null;\r
+        }\r
+        return getResult;\r
+    }\r
     \r
 }\r