package com.rackspace.cloud.servers.api.client.http;
import java.util.ArrayList;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;
import android.util.Log;
import com.rackspace.cloud.files.api.client.Container;
/**
*
* @author Adam Menz
*
*/
public class AuthXMLParser extends DefaultHandler {
private String token;
private String serverURL;
private String storageURL;
private String cdnURL;
private String curService;
private StringBuffer currentData;
public void startElement(String uri, String name, String qName,
Attributes atts) {
currentData = new StringBuffer();
if("service".equals(name)){
curService = atts.getValue("name");
}
if("endpoint".equals(name)){
if(curService.equals("cloudFilesCDN")){
cdnURL = atts.getValue("publicURL");
}
if(curService.equals("cloudFiles")){
storageURL = atts.getValue("publicURL");
}
if(curService.equals("cloudServers")){
serverURL = atts.getValue("publicURL");
}
}
if("token".equals(name)){
token = atts.getValue("id");
}
}
public void endElement(String uri, String name, String qName) {
String value = currentData.toString().trim();
/*
if ("account".equals(name)) {
} else if ("container".equals(name)) {
if (containers == null) {
containers = new ArrayList<Container>();
}
containers.add(container);
} else if ("name".equals(name)) {
container.setName(value);
} else if ("count".equals(name)) {
container.setCount(Integer.parseInt(value));
} else if ("bytes".equals(name)) {
container.setBytes(Long.parseLong(value));
} else if ("cdn_enabled".equals(name)) {
container.setCdnEnabled("True".equals(value));
} else if ("ttl".equals(name)) {
container.setTtl(Integer.parseInt(value));
} else if ("cdn_url".equals(name)) {
container.setCdnUrl(value);
} else if ("log_retention".equals(name)) {
container.setLogRetention("True".equals(value));
}
*/
}
public void characters(char ch[], int start, int length) {
Log.d("Rackspace-Cloud", "Characters: \"");
for (int i = start; i < start + length; i++) {
switch (ch[i]) {
case '\\':
Log.d("Rackspace-Cloud", "\\\\");
break;
case '"':
Log.d("Rackspace-Cloud", "\\\"");
break;
case '\n':
Log.d("Rackspace-Cloud", "\\n");
break;
case '\r':
Log.d("Rackspace-Cloud", "\\r");
break;
case '\t':
Log.d("Rackspace-Cloud", "\\t");
break;
default:
Log.d("Rackspace-Cloud", String.valueOf(ch[i]));
break;
}
}
Log.d("Rackspace-Cloud", "\"\n");
for (int i = start; i < (start + length); i++) {
currentData.append(ch[i]);
}
}
public String getToken(){
return token;
}
public String getServerURL(){
return serverURL;
}
public String getStorageURL(){
return storageURL;
}
public String getCdnURL(){
return cdnURL;
}
}