package test.util;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Properties;
public class ServiceHTTPD extends NanoHTTPD
{
public ServiceHandler serviceHandler;
public ServiceHTTPD(int port) throws IOException {
super(port);
}
public Response serve( String uri, String method, Properties header, Properties parms )
{
Response response = super.serve( uri, method, header, parms);
if (NanoHTTPD.HTTP_NOTFOUND.equals(response.status) && serviceHandler!=null && uri.endsWith("Service")) {
return serveService(uri, method, header, parms);
} else
return response;
}
public Response serveService( String uri, String method, Properties header, Properties parms )
{
int index = uri.lastIndexOf('/');
String serviceName = uri.substring(index+1);
System.out.println("Service method: " + serviceName);
Response response = serviceHandler.runService(serviceName, header, parms);
String responseData = "";
if (response.data instanceof ByteArrayInputStream) {
try {
response.data.mark(response.data.available());
byte[] bytes = new byte[response.data.available()];
response.data.read(bytes);
responseData = new String(bytes);
} catch (IOException e) {
e.printStackTrace();
} finally {
try { response.data.reset(); } catch (IOException e) { e.printStackTrace(); }
}
}
System.out.println("Service response: " + response.status + ";" + responseData);
return response;
}
}