Statistics
| Branch: | Revision:

root / src / com / rackspace / cloud / servers / api / client / BackupManager.java @ 1a79c76b

History | View | Annotate | Download (3.1 kB)

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

    
6
import java.io.IOException;
7
import java.io.StringReader;
8

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

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

    
22
import android.content.Context;
23

    
24
import com.rackspace.cloud.files.api.client.CustomHttpClient;
25
import com.rackspace.cloud.servers.api.client.parsers.BackupXMLParser;
26
import com.rackspace.cloud.servers.api.client.parsers.CloudServersFaultXMLParser;
27

    
28
public class BackupManager extends EntityManager {
29

    
30
        public Backup getBackup(Server server, Context context) throws CloudServersException {
31
                
32
                CustomHttpClient httpclient = new CustomHttpClient(context);
33
                HttpGet get = new HttpGet(Account.getAccount().getServerUrl() + "/servers/" + server.getId() + "/backup_schedule/.xml" + cacheBuster());
34
                Backup backup = new Backup();
35
                get.addHeader("X-Auth-Token", Account.getAccount().getAuthToken());
36
                
37
                try {                        
38
                        HttpResponse resp = httpclient.execute(get);                    
39
                    BasicResponseHandler responseHandler = new BasicResponseHandler();
40
                    String body = responseHandler.handleResponse(resp);
41
                    
42
                    if (resp.getStatusLine().getStatusCode() == 200 || resp.getStatusLine().getStatusCode() == 203) {                            
43
                            BackupXMLParser backupXMLParser = new BackupXMLParser();
44
                            SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
45
                            XMLReader xmlReader = saxParser.getXMLReader();
46
                            xmlReader.setContentHandler(backupXMLParser);
47
                            xmlReader.parse(new InputSource(new StringReader(body)));                            
48
                            backup = backupXMLParser.getBackup();                            
49
                    } else {
50
                            CloudServersFaultXMLParser parser = new CloudServersFaultXMLParser();
51
                            SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
52
                            XMLReader xmlReader = saxParser.getXMLReader();
53
                            xmlReader.setContentHandler(parser);
54
                            xmlReader.parse(new InputSource(new StringReader(body)));                            
55
                            CloudServersException cse = parser.getException();                            
56
                            throw cse;
57
                    }
58
                } catch (ClientProtocolException e) {
59
                        CloudServersException cse = new CloudServersException();
60
                        cse.setMessage(e.getLocalizedMessage());
61
                        throw cse;
62
                } catch (IOException e) {
63
                        CloudServersException cse = new CloudServersException();
64
                        cse.setMessage(e.getLocalizedMessage());
65
                        throw cse;
66
                } catch (ParserConfigurationException e) {
67
                        CloudServersException cse = new CloudServersException();
68
                        cse.setMessage(e.getLocalizedMessage());
69
                        throw cse;
70
                } catch (SAXException e) {
71
                        CloudServersException cse = new CloudServersException();
72
                        cse.setMessage(e.getLocalizedMessage());
73
                        throw cse;
74
                } catch (FactoryConfigurationError e) {
75
                        CloudServersException cse = new CloudServersException();
76
                        cse.setMessage(e.getLocalizedMessage());
77
                        throw cse;
78
                }
79
                
80
                
81
                return backup;
82
        }
83

    
84
        
85
}