package org.ovirt.engine.ui.common.uicommon;
import com.google.gwt.user.client.Window.Location;
/**
* Holder for ws-proxy related configuration.
*/
public class WebsocketProxyConfig {
private final String configValue;
private String targetHost;
private static final String ENGINE = "Engine";//$NON-NLS-1$
private static final String HOST = "Host";//$NON-NLS-1$
/**
* @param configValue - websocket proxy config string
* @param targetHost - this is used only when the proxy is deployed on each host
*/
public WebsocketProxyConfig(String configValue, String targetHost) {
if (!matchesHostColonPort(configValue)) {
throw new IllegalArgumentException("Config value must be in following form: host:port");//$NON-NLS-1$
}
this.configValue = configValue;
this.targetHost = targetHost;
}
public String getProxyHost() {
String val = configValue.split(":")[0];//$NON-NLS-1$
if (val.equals(ENGINE)) {
return Location.getHostName(); //the proxy runs on the engine
} else if (val.equals(HOST)) {
return this.targetHost; //the proxy runs on the engine
}
return val;
}
public String getProxyPort() {
return configValue.split(":")[1];//$NON-NLS-1$
}
private boolean matchesHostColonPort(String s) {
return s == null ? false : s.matches("\\S+:\\d+"); //$NON-NLS-1$
}
}