/** * */ package com.rackspace.cloud.loadbalancer.api.client; import java.io.IOException; import java.io.UnsupportedEncodingException; import javax.xml.parsers.FactoryConfigurationError; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpPut; import org.apache.http.entity.StringEntity; import org.apache.http.protocol.RequestExpectContinue; import android.content.Context; import com.rackspace.cloud.files.api.client.CustomHttpClient; import com.rackspace.cloud.servers.api.client.Account; import com.rackspace.cloud.servers.api.client.CloudServersException; import com.rackspace.cloud.servers.api.client.http.HttpBundle; public class ConnectionThrottleManager extends EntityManager { private Context context; public ConnectionThrottleManager(Context context) { this.context = context; } public HttpBundle update(LoadBalancer loadBalancer, ConnectionThrottle throttle) throws CloudServersException { HttpResponse resp = null; CustomHttpClient httpclient = new CustomHttpClient(context); HttpPut put = new HttpPut(LoadBalancer.getRegionUrl(loadBalancer.getRegion()) + Account.getAccount().getAccountId() + "/loadbalancers/" + loadBalancer.getId() + "/connectionthrottle"); put.addHeader("X-Auth-Token", Account.getAccount().getAuthToken()); put.addHeader("Content-Type", "application/xml"); String xml = "<connectionThrottle xmlns=\"http://docs.openstack.org/loadbalancers/api/v1.0\" " + "minConnections=\"" + throttle.getMinConnections() + "\" " + "maxConnections=\"" + throttle.getMaxConnections() + "\" " + "maxConnectionRate=\"" + throttle.getMaxConnectionRate() + "\" " + "rateInterval=\"" + throttle.getRateInterval() + "\" />"; StringEntity tmp = null; try { tmp = new StringEntity(xml); } catch (UnsupportedEncodingException e) { CloudServersException cse = new CloudServersException(); cse.setMessage(e.getLocalizedMessage()); throw cse; } put.setEntity(tmp); httpclient.removeRequestInterceptorByClass(RequestExpectContinue.class); HttpBundle bundle = new HttpBundle(); bundle.setCurlRequest(put); try { resp = httpclient.execute(put); bundle.setHttpResponse(resp); } catch (ClientProtocolException e) { CloudServersException cse = new CloudServersException(); cse.setMessage(e.getLocalizedMessage()); throw cse; } catch (IOException e) { CloudServersException cse = new CloudServersException(); cse.setMessage(e.getLocalizedMessage()); throw cse; } catch (FactoryConfigurationError e) { CloudServersException cse = new CloudServersException(); cse.setMessage(e.getLocalizedMessage()); throw cse; } return bundle; } public HttpBundle delete(LoadBalancer loadBalancer) throws CloudServersException { HttpResponse resp = null; CustomHttpClient httpclient = new CustomHttpClient(context); HttpDelete delete = new HttpDelete(LoadBalancer.getRegionUrl(loadBalancer.getRegion()) + Account.getAccount().getAccountId() + "/loadbalancers/" + loadBalancer.getId() + "/connectionthrottle"); delete.addHeader("X-Auth-Token", Account.getAccount().getAuthToken()); delete.addHeader("Content-Type", "application/xml"); httpclient.removeRequestInterceptorByClass(RequestExpectContinue.class); HttpBundle bundle = new HttpBundle(); bundle.setCurlRequest(delete); try { resp = httpclient.execute(delete); bundle.setHttpResponse(resp); } catch (ClientProtocolException e) { CloudServersException cse = new CloudServersException(); cse.setMessage(e.getLocalizedMessage()); throw cse; } catch (IOException e) { CloudServersException cse = new CloudServersException(); cse.setMessage(e.getLocalizedMessage()); throw cse; } catch (FactoryConfigurationError e) { CloudServersException cse = new CloudServersException(); cse.setMessage(e.getLocalizedMessage()); throw cse; } return bundle; } }