mirror of
https://github.com/owncloud/android-library.git
synced 2025-06-07 16:06:08 +00:00
Add cookie restore to methods OwnCloudClientFactory#createOwnCloudClient(Account ...)
This commit is contained in:
parent
1b3af22b89
commit
becf4f3c13
@ -27,9 +27,12 @@ package com.owncloud.android.lib.common;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.security.GeneralSecurityException;
|
import java.security.GeneralSecurityException;
|
||||||
|
|
||||||
|
import org.apache.commons.httpclient.Cookie;
|
||||||
|
|
||||||
import com.owncloud.android.lib.common.accounts.AccountTypeUtils;
|
import com.owncloud.android.lib.common.accounts.AccountTypeUtils;
|
||||||
import com.owncloud.android.lib.common.accounts.AccountUtils;
|
import com.owncloud.android.lib.common.accounts.AccountUtils;
|
||||||
import com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException;
|
import com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException;
|
||||||
|
import com.owncloud.android.lib.common.accounts.AccountUtils.Constants;
|
||||||
import com.owncloud.android.lib.common.network.NetworkUtils;
|
import com.owncloud.android.lib.common.network.NetworkUtils;
|
||||||
|
|
||||||
import android.accounts.Account;
|
import android.accounts.Account;
|
||||||
@ -93,6 +96,9 @@ public class OwnCloudClientFactory {
|
|||||||
client.setBasicCredentials(username, password);
|
client.setBasicCredentials(username, password);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Restore cookies
|
||||||
|
restoreCookies(am, account, client);
|
||||||
|
|
||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,6 +136,9 @@ public class OwnCloudClientFactory {
|
|||||||
client.setBasicCredentials(username, password);
|
client.setBasicCredentials(username, password);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Restore cookies
|
||||||
|
restoreCookies(am, account, client);
|
||||||
|
|
||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,5 +168,34 @@ public class OwnCloudClientFactory {
|
|||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restore the client cookies
|
||||||
|
* @param am
|
||||||
|
* @param account
|
||||||
|
* @param client
|
||||||
|
*/
|
||||||
|
private static void restoreCookies(AccountManager am, Account account, OwnCloudClient client) {
|
||||||
|
|
||||||
|
Log.d(TAG, "Restoring cookies for " + account.name);
|
||||||
|
|
||||||
|
Uri serverUri = (client.getBaseUri() != null)? client.getBaseUri() : client.getWebdavUri();
|
||||||
|
|
||||||
|
String cookiesString = am.getUserData(account, Constants.KEY_COOKIES);
|
||||||
|
if (cookiesString !=null) {
|
||||||
|
String[] cookies = cookiesString.split(";");
|
||||||
|
if (cookies.length > 0) {
|
||||||
|
for (int i=0; i< cookies.length; i++) {
|
||||||
|
Cookie cookie = new Cookie();
|
||||||
|
int equalPos = cookies[i].indexOf('=');
|
||||||
|
cookie.setName(cookies[i].substring(0, equalPos));
|
||||||
|
cookie.setValue(cookies[i].substring(equalPos + 1));
|
||||||
|
cookie.setDomain(serverUri.getHost()); // VERY IMPORTANT
|
||||||
|
cookie.setPath(serverUri.getPath()); // VERY IMPORTANT
|
||||||
|
|
||||||
|
client.getState().addCookie(cookie);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -124,6 +124,7 @@ public class OwnCloudClientMap {
|
|||||||
// Get all accounts
|
// Get all accounts
|
||||||
Account [] accounts = AccountManager.get(context.getApplicationContext())
|
Account [] accounts = AccountManager.get(context.getApplicationContext())
|
||||||
.getAccountsByType(accountType);
|
.getAccountsByType(accountType);
|
||||||
|
|
||||||
// Save cookies for all accounts
|
// Save cookies for all accounts
|
||||||
for(Account account: accounts){
|
for(Account account: accounts){
|
||||||
saveClient(account, context.getApplicationContext());
|
saveClient(account, context.getApplicationContext());
|
||||||
@ -142,4 +143,5 @@ public class OwnCloudClientMap {
|
|||||||
Log.d(TAG, " comment: "+ cookie.getComment() );
|
Log.d(TAG, " comment: "+ cookie.getComment() );
|
||||||
Log.d(TAG, " secure: "+ cookie.getSecure() );
|
Log.d(TAG, " secure: "+ cookie.getSecure() );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user