package plugin;
import org.apache.http.client.*;
import org.apache.http.conn.scheme.*;
import org.apache.http.conn.ssl.*;
import org.apache.http.cookie.*;
import org.apache.http.impl.client.*;
import org.apache.http.impl.conn.*;
public abstract class IliasPlugin {
public enum LoginStatus {
WRONG_PASSWORD, CONNECTION_FAILED, SUCCESS
};
DefaultHttpClient client;
private final RedirectStrategy strategy;
public IliasPlugin() {
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("https", 80, PlainSocketFactory.getSocketFactory()));
schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));
PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry);
client = new DefaultHttpClient(cm);
strategy = new LaxRedirectStrategy();
client.setRedirectStrategy(strategy);
}
public final DefaultHttpClient getClient() {
DefaultHttpClient clonedClient = new DefaultHttpClient();
final CookieStore cookieStore = client.getCookieStore();
for (Cookie cookie : cookieStore.getCookies()) {
clonedClient.getCookieStore().addCookie(cookie);
}
return clonedClient;
}
public final void shutdown() {
client.getConnectionManager().shutdown();
}
public abstract LoginStatus login(String username, String password);
public abstract String getBaseUri();
public abstract String getDashboardHTML();
}