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

Move responsibility of saving cookies from OwnCloudClientManager#saveClient(Account, Context) to AccountUtils#saveClient(Account , Context)

This commit is contained in:
masensio 2014-06-12 15:43:53 +02:00
parent e7a0e30a27
commit 44f5337a50
5 changed files with 45 additions and 55 deletions

View File

@ -51,10 +51,6 @@ public interface OwnCloudClientManager {
public OwnCloudClient getClientFor( public OwnCloudClient getClientFor(
Uri serverBaseUri, OwnCloudCredentials credentials, Context context); Uri serverBaseUri, OwnCloudCredentials credentials, Context context);
public void saveClient(Account savedAccount, Context context)
throws AccountNotFoundException, AuthenticatorException,
IOException, OperationCanceledException;
public void saveAllClients(Context context, String accountType) public void saveAllClients(Context context, String accountType)
throws AccountNotFoundException, AuthenticatorException, throws AccountNotFoundException, AuthenticatorException,
IOException, OperationCanceledException; IOException, OperationCanceledException;

View File

@ -36,11 +36,6 @@ public class SimpleFactoryManager implements OwnCloudClientManager {
return client; return client;
} }
@Override
public void saveClient(Account savedAccount, Context context) {
// TODO Auto-generated method stub
}
@Override @Override
public void saveAllClients(Context context, String accountType) { public void saveAllClients(Context context, String accountType) {
// TODO Auto-generated method stub // TODO Auto-generated method stub

View File

@ -28,21 +28,17 @@ import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import org.apache.commons.httpclient.Cookie;
import android.accounts.Account; import android.accounts.Account;
import android.accounts.AccountManager; import android.accounts.AccountManager;
import android.accounts.AuthenticatorException; import android.accounts.AuthenticatorException;
import android.accounts.OperationCanceledException; import android.accounts.OperationCanceledException;
import android.content.Context; import android.content.Context;
import android.util.Log;
import android.net.Uri; import android.net.Uri;
import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClient;
import com.owncloud.android.lib.common.OwnCloudClientFactory; import com.owncloud.android.lib.common.OwnCloudClientFactory;
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;
/** /**
* Implementation of {@link OwnCloudClientManager} * Implementation of {@link OwnCloudClientManager}
@ -57,7 +53,7 @@ import com.owncloud.android.lib.common.accounts.AccountUtils.Constants;
public class SingleSessionManager implements OwnCloudClientManager { public class SingleSessionManager implements OwnCloudClientManager {
private static final String TAG = SingleSessionManager.class.getSimpleName(); //private static final String TAG = SingleSessionManager.class.getSimpleName();
private static OwnCloudClientManager mInstance = null; private static OwnCloudClientManager mInstance = null;
@ -144,54 +140,36 @@ public class SingleSessionManager implements OwnCloudClientManager {
@Override @Override
public synchronized void saveClient(Account savedAccount, Context context) public synchronized void saveAllClients(Context context, String accountType)
throws AccountNotFoundException, AuthenticatorException, IOException, throws AccountNotFoundException, AuthenticatorException, IOException,
OperationCanceledException { OperationCanceledException {
// Account Manager // Get all accounts
AccountManager ac = AccountManager.get(context.getApplicationContext()); Account [] accounts = AccountManager.get(context.getApplicationContext())
.getAccountsByType(accountType);
if (savedAccount != null) {
Uri serverBaseUri = // Save cookies for all accounts
Uri.parse(AccountUtils.getBaseUrlForAccount(context, savedAccount)); for(Account account: accounts){
Uri serverBaseUri =
Uri.parse(AccountUtils.getBaseUrlForAccount(context, account));
Map<OwnCloudCredentials, OwnCloudClient> clientsPerAccount = Map<OwnCloudCredentials, OwnCloudClient> clientsPerAccount =
mClientsPerServer.get(serverBaseUri.toString()); mClientsPerServer.get(serverBaseUri.toString());
if (clientsPerAccount != null) { if (clientsPerAccount != null) {
OwnCloudCredentials credentials = OwnCloudCredentials credentials =
AccountUtils.getCredentialsForAccount(context, savedAccount); AccountUtils.getCredentialsForAccount(context, account);
/// TODO - CRITERIA FOR MATCH OF KEYS!!! /// TODO - CRITERIA FOR MATCH OF KEYS!!!
OwnCloudClient client = clientsPerAccount.get(credentials); OwnCloudClient client = clientsPerAccount.get(credentials);
if (client != null) {
if (client != null) { AccountUtils.saveClient(client, account, context.getApplicationContext());
String cookiesString = client.getCookiesString(); }
if (cookiesString != "") {
ac.setUserData(savedAccount, Constants.KEY_COOKIES, cookiesString);
Log.d(TAG, "Saving Cookies: "+ cookiesString );
}
}
} }
} }
} }
@Override
public synchronized void saveAllClients(Context context, String accountType)
throws AccountNotFoundException, AuthenticatorException, IOException,
OperationCanceledException {
// Get all accounts
Account [] accounts = AccountManager.get(context.getApplicationContext())
.getAccountsByType(accountType);
// Save cookies for all accounts
for(Account account: accounts){
saveClient(account, context.getApplicationContext());
}
}
} }

View File

@ -26,7 +26,7 @@
package com.owncloud.android.lib.common.accounts; package com.owncloud.android.lib.common.accounts;
import java.io.IOException; import java.io.IOException;
import com.owncloud.android.lib.common.OwnCloudClient;
import com.owncloud.android.lib.common.OwnCloudCredentials; import com.owncloud.android.lib.common.OwnCloudCredentials;
import com.owncloud.android.lib.common.OwnCloudCredentialsFactory; import com.owncloud.android.lib.common.OwnCloudCredentialsFactory;
import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.lib.resources.status.OwnCloudVersion;
@ -37,6 +37,7 @@ import android.accounts.AccountsException;
import android.accounts.AuthenticatorException; import android.accounts.AuthenticatorException;
import android.accounts.OperationCanceledException; import android.accounts.OperationCanceledException;
import android.content.Context; import android.content.Context;
import android.util.Log;
public class AccountUtils { public class AccountUtils {
public static final String WEBDAV_PATH_1_2 = "/webdav/owncloud.php"; public static final String WEBDAV_PATH_1_2 = "/webdav/owncloud.php";
@ -186,7 +187,24 @@ public class AccountUtils {
} }
public static void saveClient(OwnCloudClient client, Account savedAccount, Context context) {
// Account Manager
AccountManager ac = AccountManager.get(context.getApplicationContext());
if (client != null) {
String cookiesString = client.getCookiesString();
if (cookiesString != "") {
ac.setUserData(savedAccount, Constants.KEY_COOKIES, cookiesString);
Log.d("AccountUtils", "Saving Cookies: "+ cookiesString );
}
}
}
public static class AccountNotFoundException extends AccountsException { public static class AccountNotFoundException extends AccountsException {
/** Generated - should be refreshed every time the class changes!! */ /** Generated - should be refreshed every time the class changes!! */

View File

@ -30,6 +30,7 @@ import com.owncloud.android.lib.common.OwnCloudClient;
import com.owncloud.android.lib.common.OwnCloudClientFactory; import com.owncloud.android.lib.common.OwnCloudClientFactory;
import com.owncloud.android.lib.common.OwnCloudCredentials; import com.owncloud.android.lib.common.OwnCloudCredentials;
import com.owncloud.android.lib.common.SingleSessionManager; import com.owncloud.android.lib.common.SingleSessionManager;
import com.owncloud.android.lib.common.accounts.AccountUtils;
import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
@ -254,6 +255,8 @@ public abstract class RemoteOperation implements Runnable {
mClient = SingleSessionManager.getInstance(). mClient = SingleSessionManager.getInstance().
getClientFor(mAccount, mContext); getClientFor(mAccount, mContext);
} }
// Save Client Cookies
AccountUtils.saveClient(mClient, mAccount, mContext);
} else { } else {
throw new IllegalStateException("Trying to run a remote operation asynchronously with no client instance or account"); throw new IllegalStateException("Trying to run a remote operation asynchronously with no client instance or account");
} }