Skip to content

Commit 204c9c1

Browse files
committed
Fix GetServerInfo and GetStatus operations
Signed-off-by: ZetaTom <[email protected]>
1 parent 342de39 commit 204c9c1

File tree

1 file changed

+32
-49
lines changed

1 file changed

+32
-49
lines changed

library/src/main/java/com/owncloud/android/lib/resources/status/GetStatusRemoteOperation.java

Lines changed: 32 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -28,35 +28,26 @@
2828
import android.net.ConnectivityManager;
2929
import android.net.Uri;
3030

31-
import com.owncloud.android.lib.common.OwnCloudClient;
32-
import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
31+
import com.nextcloud.common.NextcloudClient;
32+
import com.nextcloud.operations.GetMethod;
3333
import com.owncloud.android.lib.common.accounts.AccountUtils;
3434
import com.owncloud.android.lib.common.operations.RemoteOperation;
3535
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
3636
import com.owncloud.android.lib.common.utils.Log_OC;
3737

3838
import org.apache.commons.httpclient.HttpStatus;
39-
import org.apache.commons.httpclient.methods.GetMethod;
40-
import org.apache.commons.httpclient.params.HttpMethodParams;
41-
import org.apache.commons.httpclient.params.HttpParams;
4239
import org.json.JSONException;
4340
import org.json.JSONObject;
4441

45-
import java.util.ArrayList;
42+
import kotlin.Pair;
4643

4744
/**
4845
* Checks if the server is valid and if the server supports the Share API
4946
*
5047
* @author David A. Velasco
5148
* @author masensio
5249
*/
53-
public class GetStatusRemoteOperation extends RemoteOperation {
54-
55-
/**
56-
* Maximum time to wait for a response from the server when the connection is being tested, in MILLISECONDs.
57-
*/
58-
private static final int TRY_CONNECTION_TIMEOUT = 50000;
59-
50+
public class GetStatusRemoteOperation extends RemoteOperation<Pair<OwnCloudVersion, Boolean>> {
6051
private static final String TAG = GetStatusRemoteOperation.class.getSimpleName();
6152

6253
private static final String NODE_INSTALLED = "installed";
@@ -66,28 +57,24 @@ public class GetStatusRemoteOperation extends RemoteOperation {
6657
private static final String PROTOCOL_HTTP = "http://";
6758
private static final int UNTRUSTED_DOMAIN_ERROR_CODE = 15;
6859

69-
private RemoteOperationResult mLatestResult;
70-
private Context mContext;
60+
private RemoteOperationResult<Pair<OwnCloudVersion, Boolean>> mLatestResult;
61+
private final Context mContext;
7162

7263
public GetStatusRemoteOperation(Context context) {
7364
mContext = context;
7465
}
7566

76-
private boolean tryConnection(OwnCloudClient client) {
67+
private boolean tryConnection(NextcloudClient client) {
7768
boolean retval = false;
78-
GetMethod get = null;
79-
String baseUrlSt = client.getBaseUri().toString();
69+
com.nextcloud.operations.GetMethod get = null;
70+
String baseUrlSt = String.valueOf(client.getBaseUri());
8071
try {
81-
get = new GetMethod(baseUrlSt + AccountUtils.STATUS_PATH);
82-
83-
HttpParams params = HttpMethodParams.getDefaultParams();
84-
params.setParameter(HttpMethodParams.USER_AGENT, OwnCloudClientManagerFactory.getUserAgent());
85-
get.getParams().setDefaults(params);
72+
get = new com.nextcloud.operations.GetMethod(baseUrlSt + AccountUtils.STATUS_PATH, false);
8673

8774
client.setFollowRedirects(false);
8875
boolean isRedirectToNonSecureConnection = false;
89-
int status = client.executeMethod(get, TRY_CONNECTION_TIMEOUT, TRY_CONNECTION_TIMEOUT);
90-
mLatestResult = new RemoteOperationResult((status == HttpStatus.SC_OK), get);
76+
int status = client.execute(get);
77+
mLatestResult = new RemoteOperationResult<>((status == HttpStatus.SC_OK), get);
9178

9279
String redirectedLocation = mLatestResult.getRedirectedLocation();
9380
while (redirectedLocation != null && redirectedLocation.length() > 0
@@ -98,9 +85,9 @@ private boolean tryConnection(OwnCloudClient client) {
9885
redirectedLocation.startsWith(PROTOCOL_HTTP)
9986
);
10087
get.releaseConnection();
101-
get = new GetMethod(redirectedLocation);
102-
status = client.executeMethod(get, TRY_CONNECTION_TIMEOUT, TRY_CONNECTION_TIMEOUT);
103-
mLatestResult = new RemoteOperationResult((status == HttpStatus.SC_OK), get);
88+
get = new GetMethod(redirectedLocation, false);
89+
status = client.execute(get);
90+
mLatestResult = new RemoteOperationResult<>((status == HttpStatus.SC_OK), get);
10491
redirectedLocation = mLatestResult.getRedirectedLocation();
10592
}
10693

@@ -109,7 +96,7 @@ private boolean tryConnection(OwnCloudClient client) {
10996
if (status == HttpStatus.SC_OK) {
11097
JSONObject json = new JSONObject(response);
11198
if (!json.getBoolean(NODE_INSTALLED)) {
112-
mLatestResult = new RemoteOperationResult(
99+
mLatestResult = new RemoteOperationResult<>(
113100
RemoteOperationResult.ResultCode.INSTANCE_NOT_CONFIGURED);
114101
} else {
115102
boolean extendedSupport = false;
@@ -121,24 +108,22 @@ private boolean tryConnection(OwnCloudClient client) {
121108
OwnCloudVersion ocVersion = new OwnCloudVersion(version);
122109

123110
if (!ocVersion.isVersionValid()) {
124-
mLatestResult = new RemoteOperationResult(RemoteOperationResult.ResultCode.BAD_OC_VERSION);
111+
mLatestResult = new RemoteOperationResult<>(RemoteOperationResult.ResultCode.BAD_OC_VERSION);
125112
} else {
126113
// success
127114
if (isRedirectToNonSecureConnection) {
128-
mLatestResult = new RemoteOperationResult(
115+
mLatestResult = new RemoteOperationResult<>(
129116
RemoteOperationResult.ResultCode.OK_REDIRECT_TO_NON_SECURE_CONNECTION);
130117
} else {
131-
mLatestResult = new RemoteOperationResult(
118+
mLatestResult = new RemoteOperationResult<>(
132119
baseUrlSt.startsWith(PROTOCOL_HTTPS) ?
133120
RemoteOperationResult.ResultCode.OK_SSL :
134121
RemoteOperationResult.ResultCode.OK_NO_SSL
135122
);
136123
}
137124

138-
ArrayList<Object> data = new ArrayList<>();
139-
data.add(ocVersion);
140-
data.add(extendedSupport);
141-
mLatestResult.setData(data);
125+
Pair<OwnCloudVersion, Boolean> data = new Pair<>(ocVersion, extendedSupport);
126+
mLatestResult.setResultData(data);
142127
retval = true;
143128
}
144129
}
@@ -147,22 +132,22 @@ private boolean tryConnection(OwnCloudClient client) {
147132
JSONObject json = new JSONObject(response);
148133

149134
if (json.getInt("code") == UNTRUSTED_DOMAIN_ERROR_CODE) {
150-
mLatestResult = new RemoteOperationResult(RemoteOperationResult.ResultCode.UNTRUSTED_DOMAIN);
135+
mLatestResult = new RemoteOperationResult<>(RemoteOperationResult.ResultCode.UNTRUSTED_DOMAIN);
151136
} else {
152-
mLatestResult = new RemoteOperationResult(false, status, get.getResponseHeaders());
137+
mLatestResult = new RemoteOperationResult<>(false, get);
153138
}
154139
} catch (JSONException e) {
155-
mLatestResult = new RemoteOperationResult(false, status, get.getResponseHeaders());
140+
mLatestResult = new RemoteOperationResult<>(false, get);
156141
}
157142
} else {
158-
mLatestResult = new RemoteOperationResult(false, status, get.getResponseHeaders());
143+
mLatestResult = new RemoteOperationResult<>(false, get);
159144
}
160145

161146
} catch (JSONException e) {
162-
mLatestResult = new RemoteOperationResult(RemoteOperationResult.ResultCode.INSTANCE_NOT_CONFIGURED);
147+
mLatestResult = new RemoteOperationResult<>(RemoteOperationResult.ResultCode.INSTANCE_NOT_CONFIGURED);
163148

164149
} catch (Exception e) {
165-
mLatestResult = new RemoteOperationResult(e);
150+
mLatestResult = new RemoteOperationResult<>(e);
166151

167152
} finally {
168153
if (get != null)
@@ -184,18 +169,16 @@ private boolean tryConnection(OwnCloudClient client) {
184169
}
185170

186171
private boolean isOnline() {
187-
ConnectivityManager cm = (ConnectivityManager) mContext
188-
.getSystemService(Context.CONNECTIVITY_SERVICE);
189-
return cm != null && cm.getActiveNetworkInfo() != null
190-
&& cm.getActiveNetworkInfo().isConnectedOrConnecting();
172+
ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
173+
return cm != null && cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnectedOrConnecting();
191174
}
192175

193176
@Override
194-
protected RemoteOperationResult run(OwnCloudClient client) {
177+
public RemoteOperationResult<Pair<OwnCloudVersion, Boolean>> run(NextcloudClient client) {
195178
if (!isOnline()) {
196-
return new RemoteOperationResult(RemoteOperationResult.ResultCode.NO_NETWORK_CONNECTION);
179+
return new RemoteOperationResult<>(RemoteOperationResult.ResultCode.NO_NETWORK_CONNECTION);
197180
}
198-
String baseUriStr = client.getBaseUri().toString();
181+
String baseUriStr = String.valueOf(client.getBaseUri());
199182
if (baseUriStr.startsWith(PROTOCOL_HTTP) || baseUriStr.startsWith(PROTOCOL_HTTPS)) {
200183
tryConnection(client);
201184

0 commit comments

Comments
 (0)