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
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
}\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
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