Statistics
| Branch: | Revision:

root / src / com / rackspace / cloud / loadbalancer / api / client / LoadBalancerManager.java @ 23bc5e75

History | View | Annotate | Download (6 kB)

1
/**
2
 * 
3
 */
4
package com.rackspace.cloud.loadbalancer.api.client;
5

    
6
import java.io.IOException;
7
import java.io.StringReader;
8
import java.util.ArrayList;
9

    
10
import javax.xml.parsers.FactoryConfigurationError;
11
import javax.xml.parsers.ParserConfigurationException;
12
import javax.xml.parsers.SAXParser;
13
import javax.xml.parsers.SAXParserFactory;
14

    
15
import org.apache.http.HttpResponse;
16
import org.apache.http.client.ClientProtocolException;
17
import org.apache.http.client.methods.HttpGet;
18
import org.apache.http.impl.client.BasicResponseHandler;
19
import org.apache.http.impl.client.DefaultHttpClient;
20
import org.xml.sax.InputSource;
21
import org.xml.sax.SAXException;
22
import org.xml.sax.XMLReader;
23

    
24
import android.util.Log;
25

    
26
import com.rackspace.cloud.loadbalancer.api.parsers.CloudLoadBalancersFaultXMLParser;
27
import com.rackspace.cloud.loadbalancer.api.parsers.LoadBalancersXmlParser;
28
import com.rackspace.cloud.loadbalancers.api.client.http.LoadBalancersException;
29
import com.rackspace.cloud.servers.api.client.Account;
30

    
31
public class LoadBalancerManager extends EntityManager {
32
                
33
        public LoadBalancer getLoadBalncerById(long id) throws  LoadBalancersException {
34
                //TODO:grab from ord and combine list
35
                DefaultHttpClient httpclient = new DefaultHttpClient();
36
                //TODO: check for uk or us
37
                HttpGet get = new HttpGet(Account.getAccount().getLoadBalancerDFWUrl() + Account.getAccount().getAccountId() + "/loadbalancers/" + id);
38
                LoadBalancer loadBalancer = new LoadBalancer();
39
                
40
                get.addHeader("X-Auth-Token", Account.getAccount().getAuthToken());
41
                get.addHeader("Accept", "application/xml");
42
                
43
                try {                        
44
                        HttpResponse resp = httpclient.execute(get);                    
45
                    BasicResponseHandler responseHandler = new BasicResponseHandler();
46
                    String body = responseHandler.handleResponse(resp);
47
                    Log.i("LB PARSE", body);
48
                    if (resp.getStatusLine().getStatusCode() == 200 || resp.getStatusLine().getStatusCode() == 202) {                            
49
                            LoadBalancersXmlParser loadBalancersXMLParser = new LoadBalancersXmlParser();
50
                            SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
51
                            XMLReader xmlReader = saxParser.getXMLReader();
52
                            xmlReader.setContentHandler(loadBalancersXMLParser);
53
                            xmlReader.parse(new InputSource(new StringReader(body)));                            
54
                            loadBalancer = loadBalancersXMLParser.getLoadBalancer();                            
55
                    } else {
56
                            CloudLoadBalancersFaultXMLParser parser = new CloudLoadBalancersFaultXMLParser();
57
                            SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
58
                            XMLReader xmlReader = saxParser.getXMLReader();
59
                            xmlReader.setContentHandler(parser);
60
                            xmlReader.parse(new InputSource(new StringReader(body)));                            
61
                            LoadBalancersException cse = parser.getException();                            
62
                            throw cse;
63
                    }
64
                } catch (ClientProtocolException e) {
65
                        LoadBalancersException cse = new LoadBalancersException();
66
                        cse.setMessage(e.getLocalizedMessage());
67
                        throw cse;
68
                } catch (IOException e) {
69
                        LoadBalancersException cse = new LoadBalancersException();
70
                        cse.setMessage(e.getLocalizedMessage());
71
                        throw cse;
72
                } catch (ParserConfigurationException e) {
73
                        LoadBalancersException cse = new LoadBalancersException();
74
                        cse.setMessage(e.getLocalizedMessage());
75
                        throw cse;
76
                } catch (SAXException e) {
77
                        LoadBalancersException cse = new LoadBalancersException();
78
                        cse.setMessage(e.getLocalizedMessage());
79
                        throw cse;
80
                } catch (FactoryConfigurationError e) {
81
                        LoadBalancersException cse = new LoadBalancersException();
82
                        cse.setMessage(e.getLocalizedMessage());
83
                        throw cse;
84
                }
85
                
86
                return loadBalancer;
87
        }
88
        
89
public ArrayList<LoadBalancer> createList() throws LoadBalancersException {
90
                //TODO:grab from ord and combine list
91
                DefaultHttpClient httpclient = new DefaultHttpClient();
92
                //TODO:check for uk or us
93
                HttpGet get = new HttpGet(Account.getAccount().getLoadBalancerDFWUrl() + Account.getAccount().getAccountId() + "/loadbalancers");
94
                ArrayList<LoadBalancer> loadBalancers = new ArrayList<LoadBalancer>();
95
                
96
                get.addHeader("X-Auth-Token", Account.getAccount().getAuthToken());
97
                get.addHeader("Accept", "application/xml");
98
                
99
                try {                        
100
                        HttpResponse resp = httpclient.execute(get);                    
101
                    BasicResponseHandler responseHandler = new BasicResponseHandler();
102
                    String body = responseHandler.handleResponse(resp);
103
                    Log.i("LB PARSE", body);
104
                    if (resp.getStatusLine().getStatusCode() == 200 || resp.getStatusLine().getStatusCode() == 202) {                            
105
                            LoadBalancersXmlParser loadBalancersXMLParser = new LoadBalancersXmlParser();
106
                            SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
107
                            XMLReader xmlReader = saxParser.getXMLReader();
108
                            xmlReader.setContentHandler(loadBalancersXMLParser);
109
                            xmlReader.parse(new InputSource(new StringReader(body)));                            
110
                            loadBalancers = loadBalancersXMLParser.getLoadBalancers();                            
111
                    } else {
112
                            CloudLoadBalancersFaultXMLParser parser = new CloudLoadBalancersFaultXMLParser();
113
                            SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
114
                            XMLReader xmlReader = saxParser.getXMLReader();
115
                            xmlReader.setContentHandler(parser);
116
                            xmlReader.parse(new InputSource(new StringReader(body)));                            
117
                            LoadBalancersException cse = parser.getException();                            
118
                            throw cse;
119
                    }
120
                } catch (ClientProtocolException e) {
121
                        LoadBalancersException cse = new LoadBalancersException();
122
                        cse.setMessage(e.getLocalizedMessage());
123
                        throw cse;
124
                } catch (IOException e) {
125
                        LoadBalancersException cse = new LoadBalancersException();
126
                        cse.setMessage(e.getLocalizedMessage());
127
                        throw cse;
128
                } catch (ParserConfigurationException e) {
129
                        LoadBalancersException cse = new LoadBalancersException();
130
                        cse.setMessage(e.getLocalizedMessage());
131
                        throw cse;
132
                } catch (SAXException e) {
133
                        LoadBalancersException cse = new LoadBalancersException();
134
                        cse.setMessage(e.getLocalizedMessage());
135
                        throw cse;
136
                } catch (FactoryConfigurationError e) {
137
                        LoadBalancersException cse = new LoadBalancersException();
138
                        cse.setMessage(e.getLocalizedMessage());
139
                        throw cse;
140
                }
141
                return loadBalancers;
142
        }
143
}