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:
parent
11938a1fcc
commit
d67a41d5cc
@ -33,6 +33,7 @@ import android.net.Uri;
|
|||||||
import com.owncloud.android.lib.common.authentication.OwnCloudCredentials;
|
import com.owncloud.android.lib.common.authentication.OwnCloudCredentials;
|
||||||
import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory;
|
import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory;
|
||||||
import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory.OwnCloudAnonymousCredentials;
|
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.network.RedirectionPath;
|
||||||
import com.owncloud.android.lib.common.utils.Log_OC;
|
import com.owncloud.android.lib.common.utils.Log_OC;
|
||||||
import com.owncloud.android.lib.resources.status.OwnCloudVersion;
|
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.URIException;
|
||||||
import org.apache.commons.httpclient.params.HttpMethodParams;
|
import org.apache.commons.httpclient.params.HttpMethodParams;
|
||||||
import org.apache.commons.httpclient.params.HttpParams;
|
import org.apache.commons.httpclient.params.HttpParams;
|
||||||
import com.owncloud.android.lib.common.methods.HttpBaseMethod;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@ -61,6 +61,7 @@ import okhttp3.Protocol;
|
|||||||
public class OwnCloudClient extends HttpClient {
|
public class OwnCloudClient extends HttpClient {
|
||||||
|
|
||||||
public static final String WEBDAV_PATH_4_0 = "/remote.php/webdav";
|
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 STATUS_PATH = "/status.php";
|
||||||
public static final String FILES_WEB_PATH = "/index.php/apps/files";
|
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 {
|
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;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -432,6 +445,10 @@ public class OwnCloudClient extends HttpClient {
|
|||||||
return Uri.parse(mBaseUri + WEBDAV_PATH_4_0);
|
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.
|
* Sets the root URI to the ownCloud server.
|
||||||
*
|
*
|
||||||
|
@ -58,7 +58,7 @@ public class OwnCloudBasicCredentials implements OwnCloudCredentials {
|
|||||||
public void applyTo(OwnCloudClient client) {
|
public void applyTo(OwnCloudClient client) {
|
||||||
AuthPolicy.registerAuthScheme(AuthState.PREEMPTIVE_AUTH_SCHEME, BasicScheme.class);
|
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);
|
authPrefs.add(AuthPolicy.BASIC);
|
||||||
|
|
||||||
client.getOkHttpClient().newBuilder()
|
client.getOkHttpClient().newBuilder()
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package com.owncloud.android.lib.common.methods;
|
package com.owncloud.android.lib.common.methods;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import at.bitfire.dav4android.DavResource;
|
import at.bitfire.dav4android.DavResource;
|
||||||
|
|
||||||
public abstract class DavMethod implements HttpBaseMethod {
|
public abstract class DavMethod implements HttpBaseMethod {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.owncloud.android.lib.common.methods;
|
package com.owncloud.android.lib.common.methods;
|
||||||
|
|
||||||
public interface HttpBaseMethod {
|
public interface HttpBaseMethod {
|
||||||
|
|
||||||
int execute() throws Exception;
|
int execute() throws Exception;
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ import at.bitfire.dav4android.DavResource;
|
|||||||
import at.bitfire.dav4android.PropertyUtils;
|
import at.bitfire.dav4android.PropertyUtils;
|
||||||
import at.bitfire.dav4android.exception.DavException;
|
import at.bitfire.dav4android.exception.DavException;
|
||||||
import at.bitfire.dav4android.exception.HttpException;
|
import at.bitfire.dav4android.exception.HttpException;
|
||||||
|
import at.bitfire.dav4android.exception.UnauthorizedException;
|
||||||
|
|
||||||
public class PropfindMethod extends DavMethod {
|
public class PropfindMethod extends DavMethod {
|
||||||
|
|
||||||
@ -16,8 +17,12 @@ public class PropfindMethod extends DavMethod {
|
|||||||
mDepth = depth;
|
mDepth = depth;
|
||||||
};
|
};
|
||||||
|
|
||||||
public int execute() throws DavException, IOException, HttpException {
|
public int execute() throws IOException, HttpException, DavException {
|
||||||
mDavResource.propfind(mDepth, PropertyUtils.INSTANCE.getAllPropSet());
|
try {
|
||||||
|
mDavResource.propfind(mDepth, PropertyUtils.INSTANCE.getAllPropSet());
|
||||||
|
} catch (UnauthorizedException davException) {
|
||||||
|
return 401;
|
||||||
|
}
|
||||||
return mDavResource.getResponse().code();
|
return mDavResource.getResponse().code();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -206,7 +206,6 @@ public class RemoteOperationResult implements Serializable {
|
|||||||
} else {
|
} else {
|
||||||
mCode = ResultCode.UNKNOWN_ERROR;
|
mCode = ResultCode.UNKNOWN_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -76,14 +76,13 @@ public class ReadRemoteFolderOperation extends RemoteOperation {
|
|||||||
|
|
||||||
try {
|
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);
|
DavOCResource davOCResource = new DavOCResource(client.getOkHttpClient(), location);
|
||||||
PropfindMethod propfindMethod = new PropfindMethod(davOCResource, 1);
|
PropfindMethod propfindMethod = new PropfindMethod(davOCResource, 1);
|
||||||
|
|
||||||
int status = client.executeHttpMethod(propfindMethod);
|
int status = client.executeHttpMethod(propfindMethod);
|
||||||
|
|
||||||
// TODO Refactor from here down
|
// TODO Refactor from here down
|
||||||
|
|
||||||
// remote request
|
// remote request
|
||||||
// query = new PropFindMethod(client.getWebdavUri() + WebdavUtils.encodePath(mRemotePath),
|
// query = new PropFindMethod(client.getWebdavUri() + WebdavUtils.encodePath(mRemotePath),
|
||||||
// WebdavUtils.getAllPropSet(), // PropFind Properties
|
// WebdavUtils.getAllPropSet(), // PropFind Properties
|
||||||
@ -113,8 +112,6 @@ public class ReadRemoteFolderOperation extends RemoteOperation {
|
|||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
result = new RemoteOperationResult(e);
|
result = new RemoteOperationResult(e);
|
||||||
|
|
||||||
|
|
||||||
} finally {
|
} finally {
|
||||||
if (query != null)
|
if (query != null)
|
||||||
query.releaseConnection(); // let the connection available for other methods
|
query.releaseConnection(); // let the connection available for other methods
|
||||||
@ -150,14 +147,14 @@ public class ReadRemoteFolderOperation extends RemoteOperation {
|
|||||||
|
|
||||||
// parse data from remote folder
|
// parse data from remote folder
|
||||||
WebdavEntry we = new WebdavEntry(remoteData.getResponses()[0],
|
WebdavEntry we = new WebdavEntry(remoteData.getResponses()[0],
|
||||||
client.getWebdavUri().getPath());
|
client.getNewWebDavUri().getPath());
|
||||||
mFolderAndFiles.add(fillOCFile(we));
|
mFolderAndFiles.add(fillOCFile(we));
|
||||||
|
|
||||||
// loop to update every child
|
// loop to update every child
|
||||||
RemoteFile remoteFile = null;
|
RemoteFile remoteFile = null;
|
||||||
for (int i = 1; i < remoteData.getResponses().length; ++i) {
|
for (int i = 1; i < remoteData.getResponses().length; ++i) {
|
||||||
/// new OCFile instance with the data from the server
|
/// 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);
|
remoteFile = fillOCFile(we);
|
||||||
mFolderAndFiles.add(remoteFile);
|
mFolderAndFiles.add(remoteFile);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user