/**
*
*/
package org.github.etcd.service;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.github.etcd.service.impl.ClusterManagerImpl;
import org.github.etcd.service.rest.EtcdProxy;
import org.github.etcd.service.rest.impl.EtcdProxyImpl;
import org.github.etcd.viewer.EtcdWebSession;
import com.google.inject.AbstractModule;
import com.google.inject.name.Names;
public class RestModule extends AbstractModule {
private static final String ETCD_NODE = "etcd.clientURL";
public static final String SELECTED_CLUSTER_NAME = "selectedCluster";
@Override
protected void configure() {
String etcdAddress = System.getenv(ETCD_NODE);
if (etcdAddress == null) {
etcdAddress = System.getProperty(ETCD_NODE, "http://localhost:2379/");
}
bindConstant().annotatedWith(Names.named(ETCD_NODE)).to(etcdAddress);
bind(ClusterManager.class).to(ClusterManagerImpl.class).in(Singleton.class);
bind(EtcdProxyFactory.class).to(EtcdProxyFactoryImpl.class).in(Singleton.class);
}
private static class EtcdProxyFactoryImpl implements EtcdProxyFactory {
@Inject
private ClusterManager clusterManager;
@Override
public EtcdProxy getEtcdProxy(String registry, String address) {
String authToken = null;
if (EtcdWebSession.exists()) {
authToken = EtcdWebSession.get().getBasicAuthenticationToken(registry);
}
return new EtcdProxyImpl(address, authToken);
}
@Override
public EtcdProxy getEtcdProxy(String registry) {
return getEtcdProxy(registry, clusterManager.getCluster(registry).getAddress());
}
}
}