package org.emdev.common.http;
import java.util.concurrent.atomic.AtomicReference;
import org.apache.http.Header;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.message.BasicHeader;
import org.emdev.utils.LengthUtils;
import org.emdev.utils.base64.Base64;
public class HostCredentials extends UsernamePasswordCredentials {
public final String host;
private final AtomicReference<State> state = new AtomicReference<HostCredentials.State>(State.CREATED);
public HostCredentials(final String host, final String userName, final String password) {
super(userName, LengthUtils.safeString(password));
this.host = host;
}
public State getState() {
return state.get();
}
public void setState(final State newState) {
state.set(newState);
}
public boolean setState(final State oldState, final State newState) {
return state.compareAndSet(oldState, newState);
}
public Header basicAuthorization() {
final String raw = getUserName() + ":" + getPassword();
final String encoded = Base64.encodeToString(raw.getBytes(), Base64.NO_WRAP);
return new BasicHeader("Authorization", "Basic " + encoded);
}
public static enum State {
CREATED, AUTH_ASKED, AUTH_ENTERED, AUTH_SENT, AUTH_FAILED;
}
}