mirror of
https://github.com/owncloud/android-library.git
synced 2025-06-07 16:06:08 +00:00
Merge pull request #20 from owncloud/check_server_version
Updated representation of server version
This commit is contained in:
commit
cecda3333a
@ -81,10 +81,9 @@ public class AccountUtils {
|
|||||||
AccountManager ama = AccountManager.get(context);
|
AccountManager ama = AccountManager.get(context);
|
||||||
String baseurl = ama.getUserData(account, Constants.KEY_OC_BASE_URL);
|
String baseurl = ama.getUserData(account, Constants.KEY_OC_BASE_URL);
|
||||||
String version = ama.getUserData(account, Constants.KEY_OC_VERSION);
|
String version = ama.getUserData(account, Constants.KEY_OC_VERSION);
|
||||||
String versionString = ama.getUserData(account, Constants.KEY_OC_VERSION_STRING);
|
|
||||||
boolean supportsOAuth = (ama.getUserData(account, Constants.KEY_SUPPORTS_OAUTH2) != null);
|
boolean supportsOAuth = (ama.getUserData(account, Constants.KEY_SUPPORTS_OAUTH2) != null);
|
||||||
boolean supportsSamlSso = (ama.getUserData(account, Constants.KEY_SUPPORTS_SAML_WEB_SSO) != null);
|
boolean supportsSamlSso = (ama.getUserData(account, Constants.KEY_SUPPORTS_SAML_WEB_SSO) != null);
|
||||||
OwnCloudVersion ver = new OwnCloudVersion(version, versionString);
|
OwnCloudVersion ver = new OwnCloudVersion(version);
|
||||||
String webdavpath = getWebdavPath(ver, supportsOAuth, supportsSamlSso);
|
String webdavpath = getWebdavPath(ver, supportsOAuth, supportsSamlSso);
|
||||||
|
|
||||||
if (baseurl == null || webdavpath == null)
|
if (baseurl == null || webdavpath == null)
|
||||||
@ -149,10 +148,6 @@ public class AccountUtils {
|
|||||||
* http://server/path or https://owncloud.server
|
* http://server/path or https://owncloud.server
|
||||||
*/
|
*/
|
||||||
public static final String KEY_OC_BASE_URL = "oc_base_url";
|
public static final String KEY_OC_BASE_URL = "oc_base_url";
|
||||||
/**
|
|
||||||
* Version string as shown in the status.php resource in the server side
|
|
||||||
*/
|
|
||||||
public static final String KEY_OC_VERSION_STRING = "oc_version_string";
|
|
||||||
/**
|
/**
|
||||||
* Flag signaling if the ownCloud server can be accessed with OAuth2 access tokens.
|
* Flag signaling if the ownCloud server can be accessed with OAuth2 access tokens.
|
||||||
*/
|
*/
|
||||||
|
@ -56,7 +56,6 @@ public class GetRemoteStatusOperation extends RemoteOperation {
|
|||||||
|
|
||||||
private static final String NODE_INSTALLED = "installed";
|
private static final String NODE_INSTALLED = "installed";
|
||||||
private static final String NODE_VERSION = "version";
|
private static final String NODE_VERSION = "version";
|
||||||
private static final String NODE_VERSIONSTRING = "versionstring";
|
|
||||||
|
|
||||||
private String mUrl;
|
private String mUrl;
|
||||||
private RemoteOperationResult mLatestResult;
|
private RemoteOperationResult mLatestResult;
|
||||||
@ -86,8 +85,7 @@ public class GetRemoteStatusOperation extends RemoteOperation {
|
|||||||
mLatestResult = new RemoteOperationResult(RemoteOperationResult.ResultCode.INSTANCE_NOT_CONFIGURED);
|
mLatestResult = new RemoteOperationResult(RemoteOperationResult.ResultCode.INSTANCE_NOT_CONFIGURED);
|
||||||
} else {
|
} else {
|
||||||
String version = json.getString(NODE_VERSION);
|
String version = json.getString(NODE_VERSION);
|
||||||
String versionString = json.getString(NODE_VERSIONSTRING);
|
mOCVersion = new OwnCloudVersion(version);
|
||||||
mOCVersion = new OwnCloudVersion(version, versionString);
|
|
||||||
if (!mOCVersion.isVersionValid()) {
|
if (!mOCVersion.isVersionValid()) {
|
||||||
mLatestResult = new RemoteOperationResult(RemoteOperationResult.ResultCode.BAD_OC_VERSION);
|
mLatestResult = new RemoteOperationResult(RemoteOperationResult.ResultCode.BAD_OC_VERSION);
|
||||||
|
|
||||||
|
@ -27,58 +27,58 @@ package com.owncloud.android.lib.resources.status;
|
|||||||
|
|
||||||
public class OwnCloudVersion implements Comparable<OwnCloudVersion> {
|
public class OwnCloudVersion implements Comparable<OwnCloudVersion> {
|
||||||
public static final OwnCloudVersion owncloud_v1 = new OwnCloudVersion(
|
public static final OwnCloudVersion owncloud_v1 = new OwnCloudVersion(
|
||||||
0x010000);
|
0x01000000);
|
||||||
public static final OwnCloudVersion owncloud_v2 = new OwnCloudVersion(
|
public static final OwnCloudVersion owncloud_v2 = new OwnCloudVersion(
|
||||||
0x020000);
|
0x02000000);
|
||||||
public static final OwnCloudVersion owncloud_v3 = new OwnCloudVersion(
|
public static final OwnCloudVersion owncloud_v3 = new OwnCloudVersion(
|
||||||
0x030000);
|
0x03000000);
|
||||||
public static final OwnCloudVersion owncloud_v4 = new OwnCloudVersion(
|
public static final OwnCloudVersion owncloud_v4 = new OwnCloudVersion(
|
||||||
0x040000);
|
0x04000000);
|
||||||
public static final OwnCloudVersion owncloud_v4_5 = new OwnCloudVersion(
|
public static final OwnCloudVersion owncloud_v4_5 = new OwnCloudVersion(
|
||||||
0x040500);
|
0x04050000);
|
||||||
|
|
||||||
public static final int MINIMUM_VERSION_STRING_FOR_SHARING_API = 0x05000D;
|
public static final int MINIMUM_VERSION_FOR_SHARING_API = 0x05001B00; // 5.0.27
|
||||||
|
|
||||||
|
private static final int MAX_DOTS = 3;
|
||||||
|
|
||||||
// format is in version
|
// format is in version
|
||||||
// 0xAABBCC
|
// 0xAABBCCDD
|
||||||
// for version AA.BB.CC
|
// for version AA.BB.CC.DD
|
||||||
// ie version 2.0.3 will be stored as 0x020003
|
// ie version 2.0.3 will be stored as 0x02000300
|
||||||
private int mVersion;
|
private int mVersion;
|
||||||
private boolean mIsValid;
|
private boolean mIsValid;
|
||||||
// not parsed, saved same value offered by the server
|
|
||||||
private String mVersionString;
|
|
||||||
|
|
||||||
protected OwnCloudVersion(int version) {
|
protected OwnCloudVersion(int version) {
|
||||||
mVersion = version;
|
mVersion = version;
|
||||||
mIsValid = true;
|
mIsValid = true;
|
||||||
mVersionString = "";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public OwnCloudVersion(String version){
|
||||||
|
mVersion = 0;
|
||||||
|
mIsValid = false;
|
||||||
|
int countDots = version.length() - version.replace(".", "").length();
|
||||||
|
|
||||||
|
// Complete the version. Version must have 3 dots
|
||||||
|
for (int i = countDots; i < MAX_DOTS; i++) {
|
||||||
|
version = version + ".0";
|
||||||
|
}
|
||||||
|
|
||||||
|
parseVersion(version);
|
||||||
|
|
||||||
public OwnCloudVersion(String version, String versionString) {
|
|
||||||
mVersion = 0;
|
|
||||||
mIsValid = false;
|
|
||||||
parseVersionString(version);
|
|
||||||
if (versionString != null && versionString.length() > 0) {
|
|
||||||
mVersionString = versionString;
|
|
||||||
|
|
||||||
} else if (mIsValid) {
|
|
||||||
mVersionString = version;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return ((mVersion >> 16) % 256) + "." + ((mVersion >> 8) % 256) + "."
|
String versionToString = String.valueOf((mVersion >> (8*MAX_DOTS)) % 256);
|
||||||
+ ((mVersion) % 256);
|
for (int i = MAX_DOTS - 1; i >= 0; i-- ) {
|
||||||
|
versionToString = versionToString + "." + String.valueOf((mVersion >> (8*i)) % 256);
|
||||||
|
}
|
||||||
|
return versionToString;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getVersion() {
|
public String getVersion() {
|
||||||
return toString();
|
return toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getVersionString() {
|
|
||||||
return mVersionString;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isVersionValid() {
|
public boolean isVersionValid() {
|
||||||
return mIsValid;
|
return mIsValid;
|
||||||
}
|
}
|
||||||
@ -89,9 +89,9 @@ public class OwnCloudVersion implements Comparable<OwnCloudVersion> {
|
|||||||
: another.mVersion < mVersion ? 1 : -1;
|
: another.mVersion < mVersion ? 1 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseVersionString(String versionString) {
|
private void parseVersion(String version) {
|
||||||
try {
|
try {
|
||||||
mVersion = getParsedVersionString(versionString);
|
mVersion = getParsedVersion(version);
|
||||||
mIsValid = true;
|
mIsValid = true;
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -99,37 +99,26 @@ public class OwnCloudVersion implements Comparable<OwnCloudVersion> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getParsedVersionString(String versionString) throws NumberFormatException {
|
private int getParsedVersion(String version) throws NumberFormatException {
|
||||||
int version = 0;
|
int versionValue = 0;
|
||||||
|
|
||||||
// get only numeric part
|
// get only numeric part
|
||||||
versionString = versionString.replaceAll("[^\\d.]", "");
|
version = version.replaceAll("[^\\d.]", "");
|
||||||
|
|
||||||
String[] nums = versionString.split("\\.");
|
String[] nums = version.split("\\.");
|
||||||
if (nums.length > 0) {
|
for (int i = 0; i < nums.length && i <= MAX_DOTS; i++) {
|
||||||
version += Integer.parseInt(nums[0]);
|
versionValue += Integer.parseInt(nums[i]);
|
||||||
}
|
if (i < nums.length - 1) {
|
||||||
version = version << 8;
|
versionValue = versionValue << 8;
|
||||||
if (nums.length > 1) {
|
}
|
||||||
version += Integer.parseInt(nums[1]);
|
}
|
||||||
}
|
|
||||||
version = version << 8;
|
return versionValue;
|
||||||
if (nums.length > 2) {
|
|
||||||
version += Integer.parseInt(nums[2]);
|
|
||||||
}
|
|
||||||
return version;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean isSharedSupported() {
|
public boolean isSharedSupported() {
|
||||||
int versionString = 0;
|
return (mVersion >= MINIMUM_VERSION_FOR_SHARING_API);
|
||||||
try {
|
|
||||||
versionString = getParsedVersionString(mVersionString);
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
// nothing to do here
|
|
||||||
}
|
|
||||||
return (versionString >= MINIMUM_VERSION_STRING_FOR_SHARING_API);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user