package org.emergent.android.weave.client;
import java.net.URI;
import java.net.URISyntaxException;
import org.json.JSONException;
import org.json.JSONObject;
/**
* @author Patrick Woodworth
*/
public class WeaveAccountInfo {
public static WeaveAccountInfo createWeaveAccountInfo(String authtoken) {
try {
JSONObject retval = new JSONObject(authtoken);
URI server = URI.create(retval.getString("server"));
String username = retval.getString("username");
String password = retval.getString("password");
char[] secret = retval.getString("secret").toCharArray();
return createWeaveAccountInfo(server, username, password, secret);
} catch (JSONException e) {
throw new IllegalStateException(e);
}
}
public static WeaveAccountInfo createWeaveAccountInfo(String serverUri,
String username, String password, char[] encsecret)
throws URISyntaxException {
return createWeaveAccountInfo(new URI(serverUri), username, password,
encsecret);
}
public static WeaveAccountInfo createWeaveAccountInfo(URI serverUri,
String username, String password, char[] encsecret) {
return new WeaveAccountInfo(serverUri, username, password, encsecret);
}
private final URI m_server;
private final String m_username;
private final String m_password;
private final char[] m_secret;
private WeaveAccountInfo(URI server, String username, String password,
char[] secret) {
if (server == null)
throw new NullPointerException("server was null");
if (username == null)
throw new NullPointerException("username was null");
if (password == null)
throw new NullPointerException("password was null");
if (secret == null)
throw new NullPointerException("secret was null");
m_server = server;
m_username = username;
m_password = password;
m_secret = secret;
}
public String getPassword() {
return m_password;
}
public char[] getSecret() {
return m_secret;
}
public String getSecretAsString() {
return m_secret == null ? null : new String(m_secret);
}
public URI getServer() {
return m_server;
}
public String getServerAsString() {
return WeaveUtil.toString(getServer());
}
public String getUsername() {
return m_username;
}
public String toAuthToken() {
try {
JSONObject retval = new JSONObject();
retval.put("server", getServerAsString());
retval.put("username", getUsername());
retval.put("password", getPassword());
retval.put("secret", getSecretAsString());
return retval.toString();
} catch (JSONException e) {
throw new IllegalStateException(e);
}
}
@Override
public String toString() {
try {
return toAuthToken();
} catch (Exception ignored) {
}
return super.toString();
}
}