/*
* Copyright (c) 2014 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.vnxe.requests;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Set;
import javax.ws.rs.core.NewCookie;
import org.apache.commons.httpclient.protocol.Protocol;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
import com.sun.jersey.api.client.filter.LoggingFilter;
import com.sun.jersey.client.apache.ApacheHttpClient;
import com.sun.jersey.client.apache.ApacheHttpClientHandler;
import com.sun.jersey.client.apache.config.ApacheHttpClientConfig;
import com.sun.jersey.client.apache.config.DefaultApacheHttpClientConfig;
/*
* This is the class to communicate with KittyHawk server
*/
public class KHClient {
private static final Logger _logger = LoggerFactory.getLogger(KHClient.class);
private static final String PROTOCOL = "https";
private static final int PORT = 443;
private ApacheHttpClient _client;
private URI _uri;
private WebResource _resource;
private Set<NewCookie> _cookie;
private boolean isUnity = false;
private String _emcCsrfToken = null;
private boolean isFastVPEnabled = true;
public KHClient(String host, int port, String username, String password) {
DefaultApacheHttpClientConfig config = new DefaultApacheHttpClientConfig();
config.getProperties().put(ApacheHttpClientConfig.PROPERTY_FOLLOW_REDIRECTS, Boolean.FALSE);
config.getProperties().put(ApacheHttpClientConfig.PROPERTY_HANDLE_COOKIES, Boolean.TRUE);
config.getState().setCredentials(null, host, port, username, password);
_client = ApacheHttpClient.create(config);
//_client.addFilter(new LoggingFilter(System.out));
Protocol.registerProtocol("https", new Protocol("https", new NonValidatingSocketFactory(), port));
try {
_uri = new URI(PROTOCOL,
null, host, port, null, null, null);
} catch (URISyntaxException e) {
_logger.error("Could not create URI using host :" + host, e);
}
_resource = _client.resource(_uri);
}
public KHClient(String host, int port, String username, String password, ApacheHttpClientHandler clientHandle, boolean isUnity) {
_client = new ApacheHttpClient(clientHandle);
//_client.addFilter(new LoggingFilter(System.out));
_client.addFilter(new HTTPBasicAuthFilter(username, password));
Protocol.registerProtocol("https", new Protocol("https", new NonValidatingSocketFactory(), port));
try {
_uri = new URI(PROTOCOL,
null, host, port, null, null, null);
} catch (URISyntaxException e) {
_logger.error("Could not create URI using host :" + host, e);
}
_resource = _client.resource(_uri);
this.isUnity = isUnity;
}
public KHClient(String host, String username, String password) {
this(host, PORT, username, password);
}
public KHClient(String host, int port, String username, String password, boolean isUnity) {
this(host, port, username, password);
this.isUnity = isUnity;
}
public boolean isUnity() {
return this.isUnity;
}
public WebResource getResource() {
return _resource;
}
public WebResource getResource(String url) {
return _client.resource(url);
}
public synchronized Set<NewCookie> getCookie() {
return _cookie;
}
public synchronized void setCookie(Set<NewCookie> _cookie) {
this._cookie = _cookie;
}
public synchronized String getEmcCsrfToken() {
return _emcCsrfToken;
}
public synchronized void setEmcCsrfToken(String _emcCsrfToken) {
this._emcCsrfToken = _emcCsrfToken;
}
public boolean isFastVPEnabled() {
return isFastVPEnabled;
}
public void setFastVPEnabled(boolean isFastVPEnabled) {
this.isFastVPEnabled = isFastVPEnabled;
}
}