1
0
mirror of https://github.com/owncloud/android-library.git synced 2025-06-07 16:06:08 +00:00

Include credentials [WIP]

This commit is contained in:
davigonz 2018-06-04 09:21:10 +02:00
parent 11938a1fcc
commit d67a41d5cc
7 changed files with 31 additions and 16 deletions

View File

@ -33,6 +33,7 @@ import android.net.Uri;
import com.owncloud.android.lib.common.authentication.OwnCloudCredentials;
import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory;
import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory.OwnCloudAnonymousCredentials;
import com.owncloud.android.lib.common.methods.HttpBaseMethod;
import com.owncloud.android.lib.common.network.RedirectionPath;
import com.owncloud.android.lib.common.utils.Log_OC;
import com.owncloud.android.lib.resources.status.OwnCloudVersion;
@ -49,7 +50,6 @@ import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.httpclient.params.HttpParams;
import com.owncloud.android.lib.common.methods.HttpBaseMethod;
import java.io.IOException;
import java.io.InputStream;
@ -61,6 +61,7 @@ import okhttp3.Protocol;
public class OwnCloudClient extends HttpClient {
public static final String WEBDAV_PATH_4_0 = "/remote.php/webdav";
public static final String NEW_WEBDAV_PATH_4_0 = "/remote.php/dav/files/";
public static final String STATUS_PATH = "/status.php";
public static final String FILES_WEB_PATH = "/index.php/apps/files";
@ -299,7 +300,19 @@ public class OwnCloudClient extends HttpClient {
}
public int executeHttpMethod (HttpBaseMethod method) throws Exception {
int status = method.execute();
boolean repeatWithFreshCredentials = false;
int repeatCounter = 0;
int status;
do {
status = method.execute();
repeatWithFreshCredentials = checkUnauthorizedAccess(status, repeatCounter);
if (repeatWithFreshCredentials) {
repeatCounter++;
}
} while (repeatWithFreshCredentials);
return status;
}
@ -432,6 +445,10 @@ public class OwnCloudClient extends HttpClient {
return Uri.parse(mBaseUri + WEBDAV_PATH_4_0);
}
public Uri getNewWebDavUri() {
return Uri.parse(mBaseUri + NEW_WEBDAV_PATH_4_0 + mCredentials.getUsername());
}
/**
* Sets the root URI to the ownCloud server.
*

View File

@ -58,7 +58,7 @@ public class OwnCloudBasicCredentials implements OwnCloudCredentials {
public void applyTo(OwnCloudClient client) {
AuthPolicy.registerAuthScheme(AuthState.PREEMPTIVE_AUTH_SCHEME, BasicScheme.class);
List<String> authPrefs = new ArrayList<String>(1);
List<String> authPrefs = new ArrayList<>(1);
authPrefs.add(AuthPolicy.BASIC);
client.getOkHttpClient().newBuilder()

View File

@ -1,7 +1,5 @@
package com.owncloud.android.lib.common.methods;
import java.io.IOException;
import at.bitfire.dav4android.DavResource;
public abstract class DavMethod implements HttpBaseMethod {

View File

@ -1,6 +1,5 @@
package com.owncloud.android.lib.common.methods;
public interface HttpBaseMethod {
int execute() throws Exception;
}

View File

@ -6,6 +6,7 @@ import at.bitfire.dav4android.DavResource;
import at.bitfire.dav4android.PropertyUtils;
import at.bitfire.dav4android.exception.DavException;
import at.bitfire.dav4android.exception.HttpException;
import at.bitfire.dav4android.exception.UnauthorizedException;
public class PropfindMethod extends DavMethod {
@ -16,8 +17,12 @@ public class PropfindMethod extends DavMethod {
mDepth = depth;
};
public int execute() throws DavException, IOException, HttpException {
public int execute() throws IOException, HttpException, DavException {
try {
mDavResource.propfind(mDepth, PropertyUtils.INSTANCE.getAllPropSet());
} catch (UnauthorizedException davException) {
return 401;
}
return mDavResource.getResponse().code();
}
}

View File

@ -206,7 +206,6 @@ public class RemoteOperationResult implements Serializable {
} else {
mCode = ResultCode.UNKNOWN_ERROR;
}
}
/**

View File

@ -76,14 +76,13 @@ public class ReadRemoteFolderOperation extends RemoteOperation {
try {
final HttpUrl location = HttpUrl.parse(client.getWebdavUri() + WebdavUtils.encodePath(mRemotePath));
final HttpUrl location = HttpUrl.parse(client.getNewWebDavUri() + WebdavUtils.encodePath(mRemotePath));
DavOCResource davOCResource = new DavOCResource(client.getOkHttpClient(), location);
PropfindMethod propfindMethod = new PropfindMethod(davOCResource, 1);
int status = client.executeHttpMethod(propfindMethod);
// TODO Refactor from here down
// remote request
// query = new PropFindMethod(client.getWebdavUri() + WebdavUtils.encodePath(mRemotePath),
// WebdavUtils.getAllPropSet(), // PropFind Properties
@ -113,8 +112,6 @@ public class ReadRemoteFolderOperation extends RemoteOperation {
} catch (Exception e) {
result = new RemoteOperationResult(e);
} finally {
if (query != null)
query.releaseConnection(); // let the connection available for other methods
@ -150,14 +147,14 @@ public class ReadRemoteFolderOperation extends RemoteOperation {
// parse data from remote folder
WebdavEntry we = new WebdavEntry(remoteData.getResponses()[0],
client.getWebdavUri().getPath());
client.getNewWebDavUri().getPath());
mFolderAndFiles.add(fillOCFile(we));
// loop to update every child
RemoteFile remoteFile = null;
for (int i = 1; i < remoteData.getResponses().length; ++i) {
/// new OCFile instance with the data from the server
we = new WebdavEntry(remoteData.getResponses()[i], client.getWebdavUri().getPath());
we = new WebdavEntry(remoteData.getResponses()[i], client.getNewWebDavUri().getPath());
remoteFile = fillOCFile(we);
mFolderAndFiles.add(remoteFile);
}