package uk.co.pembo.e2stream.server.handlers;
import com.sun.net.httpserver.*;
import java.io.*;
import java.util.List;
import uk.co.pembo.e2stream.server.AlternateDirectory;
import uk.co.pembo.e2stream.server.Settings;
import uk.co.pembo.e2stream.widget.WidgetContainer;
import uk.co.pembo.utils.Logger;
public class WidgetList
implements HttpHandler
{
public WidgetList()
{
}
private static String getWidget(String id, String title, int length, String desc, String filename)
{
String widgetXml = (new StringBuilder("<widget id=\"")).append(id).append("\">").append("<title>").append(title).append("</title>").append("<compression size=\"").append(length).append("\" type=\"zip\"/>").append("<description>").append(desc).append("</description>").append("<download>http://").append(Settings.getIpAddress()).append("/Widget/").append(filename).append("</download>").append("</widget>").toString();
return widgetXml;
}
private static String getE2StreamWidget()
{
return getWidget(Settings.getId(), Settings.getTitle(), WidgetContainer.getFile().length, Settings.getDescrption(), Settings.getFilename());
}
public static String getOtherWidgetsXml()
{
if(Settings.getAdditionalAppsDir() == null)
return "";
String widgetXml = "";
try
{
for(int i = 0; i < AlternateDirectory.getFilenames().size(); i++)
{
String filename = (String)AlternateDirectory.getFilenames().get(i);
if(filename != null && filename.toUpperCase().endsWith(".ZIP"))
{
Logger.logInfo((new StringBuilder("Loading External Package [")).append(filename).append("]").toString());
int pos = filename.indexOf(".");
String id = filename.substring(0, pos);
int size = ((byte[])AlternateDirectory.getFiles().get(i)).length;
widgetXml = (new StringBuilder(String.valueOf(widgetXml))).append(getWidget(id, id, size, id, filename)).toString();
}
}
}
catch(Exception e)
{
Logger.logError("Unable to access specified additional directory");
e.printStackTrace();
return "";
}
return widgetXml;
}
public void handle(HttpExchange t)
throws IOException
{
Logger.logInfo("Received List request from TV");
String response = xmlResponseStart;
response = (new StringBuilder(String.valueOf(response))).append(getE2StreamWidget()).toString();
response = (new StringBuilder(String.valueOf(response))).append(getOtherWidgetsXml()).toString();
response = (new StringBuilder(String.valueOf(response))).append(xmlResposneEnd).toString();
Headers responseHeaders = t.getResponseHeaders();
responseHeaders.set("Content-Type", "text/xml");
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
private static String xmlResponseStart = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><rsp stat=\"ok\"><list>";
private static String xmlResposneEnd = "</list></rsp>";
}