package org.ohmage.async;
import android.content.Context;
import org.ohmage.OhmageApi.Response;
import org.ohmage.AccountHelper;
import org.ohmage.UserPreferencesHelper;
/**
* A custom Loader that uses a username and password
*/
public abstract class AuthenticatedTaskLoader<T extends Response> extends PauseableTaskLoader<T> {
private String mUsername;
private String mHashedPassword;
private static final String TAG = "AuthenticatedTask";
public AuthenticatedTaskLoader(Context context) {
super(context);
}
public AuthenticatedTaskLoader(Context context, String username, String hashedPassword) {
super(context);
mUsername = username;
mHashedPassword = hashedPassword;
pause(!hasAuthentication());
}
public void setCredentials(String username, String hashedPassword) {
mUsername = username;
mHashedPassword = hashedPassword;
pause(!hasAuthentication());
}
public void setCredentials() {
AccountHelper sharedPrefs = new AccountHelper(getContext());
setCredentials(sharedPrefs.getUsername(), sharedPrefs.getAuthToken());
}
public String getUsername() {
return mUsername;
}
public String getHashedPassword() {
return mHashedPassword;
}
protected boolean hasAuthentication() {
return mUsername != null && mHashedPassword != null;
}
public void clearCredentials() {
mUsername = null;
mHashedPassword = null;
pause(true);
}
@Override
public void deliverResult(T response) {
response.handleError(getContext());
super.deliverResult(response);
}
}