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

make automatic login with session timeout on saml work

This commit is contained in:
theScrabi 2018-07-04 17:24:30 +02:00 committed by davigonz
parent f1c6726d30
commit bd5dc20842
3 changed files with 21 additions and 6 deletions

@ -1 +1 @@
Subproject commit b20c44c63f45355599d4bfaf00042964b9e6cafa Subproject commit 1108048f1a2ff12103cdf6a95307a314d621c088

View File

@ -46,6 +46,7 @@ import java.io.InputStream;
import java.util.List; import java.util.List;
import at.bitfire.dav4android.exception.HttpException; import at.bitfire.dav4android.exception.HttpException;
import at.bitfire.dav4android.exception.RedirectException;
import okhttp3.Cookie; import okhttp3.Cookie;
import okhttp3.Headers; import okhttp3.Headers;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
@ -131,16 +132,21 @@ public class OwnCloudClient extends HttpClient {
boolean repeatWithFreshCredentials; boolean repeatWithFreshCredentials;
int repeatCounter = 0; int repeatCounter = 0;
int status; int status = -1;
do { do {
try { try {
status = method.execute(); status = method.execute();
} catch (HttpException e) { checkFirstRedirection(method);
if(e.getMessage().contains(Integer.toString(HttpConstants.HTTP_MOVED_TEMPORARILY))) { if(mFollowRedirects) {
status = followRedirection(method).getLastStatus();
}
} catch (RedirectException e) {
// redirect must be handled twice. Once for dav4droid and once okhttp redirect errors
status = e.getStatus();
mRedirectedLocation = e.getRedirectLocation();
if(mFollowRedirects) {
status = followRedirection(method).getLastStatus(); status = followRedirection(method).getLastStatus();
} else {
throw e;
} }
} }
@ -153,6 +159,14 @@ public class OwnCloudClient extends HttpClient {
return status; return status;
} }
private void checkFirstRedirection(HttpBaseMethod method) {
final String location = method.getResponseHeader("location");
if(location != null && !location.isEmpty()) {
mRedirectedLocation = location;
}
}
private int executeRedirectedHttpMethod (HttpBaseMethod method) throws Exception { private int executeRedirectedHttpMethod (HttpBaseMethod method) throws Exception {
boolean repeatWithFreshCredentials; boolean repeatWithFreshCredentials;
int repeatCounter = 0; int repeatCounter = 0;

View File

@ -47,6 +47,7 @@ public abstract class DavMethod extends HttpBaseMethod {
mOkHttpClient, mOkHttpClient,
httpUrl httpUrl
); );
mDavResource.setFollowRedirects(false);
} }
public DavResource getDavResource() { public DavResource getDavResource() {