Commit 2a3c99f6a82b4f9281d88fcd9253c968f3106f4a

Kano 2011-11-30T15:37:40

Add API.java + API.class to access the API

diff --git a/API.class b/API.class
new file mode 100644
index 0000000..026ab14
Binary files /dev/null and b/API.class differ
diff --git a/API.java b/API.java
new file mode 100644
index 0000000..36c1578
--- /dev/null
+++ b/API.java
@@ -0,0 +1,155 @@
+/*
+ *
+ * Usage: java API command ip port
+ *
+ * If any are missing or blank they use the defaults:
+ *
+ *	command = 'summary'
+ *	ip	= '127.0.0.1'
+ *	port	= '4028'
+ *
+ */
+
+import java.net.*;
+import java.io.*;
+
+class API
+{
+	static private final int MAXRECEIVESIZE = 65535;
+
+	static private Socket socket = null;
+
+	private void closeAll() throws Exception
+	{
+		if (socket != null)
+		{
+			socket.close();
+			socket = null;
+		}
+	}
+
+	public void display(String result) throws Exception
+	{
+		String value;
+		String name;
+		String[] sections = result.split("\\|", 0);
+
+		for (int i = 0; i < sections.length; i++)
+		{
+			if (sections[i].trim().length() > 0)
+			{
+				String[] data = sections[i].split(",", 0);
+
+				for (int j = 0; j < data.length; j++)
+				{
+					String[] nameval = data[j].split("=", 2);
+
+					if (j == 0)
+					{
+						if (nameval.length > 1
+						&&  Character.isDigit(nameval[1].charAt(0)))
+							name = nameval[0] + nameval[1];
+						else
+							name = nameval[0];
+
+						System.out.println("[" + name + "] =>");
+						System.out.println("(");
+					}
+
+					if (nameval.length > 1)
+					{
+						name = nameval[0];
+						value = nameval[1];
+					}
+					else
+					{
+						name = "" + j;
+						value = nameval[0];
+					}
+
+					System.out.println("   ["+name+"] => "+value);
+				}
+				System.out.println(")");
+			}
+		}
+	}
+
+	public void process(String cmd, InetAddress ip, int port) throws Exception
+	{
+		char buf[] = new char[MAXRECEIVESIZE];
+		int len = 0;
+
+System.out.println("Attempting to send '"+cmd+"' to "+ip.getHostAddress()+":"+port);
+
+		try
+		{
+			socket = new Socket(ip, port);
+			PrintStream ps = new PrintStream(socket.getOutputStream());
+			ps.print(cmd.toLowerCase().toCharArray());
+			ps.flush();
+
+			InputStreamReader isr = new InputStreamReader(socket.getInputStream());
+			len = isr.read(buf, 0, MAXRECEIVESIZE);
+
+			closeAll();
+		}
+		catch (IOException ioe)
+		{
+			System.err.println(ioe.toString());
+			closeAll();
+			return;
+		}
+
+		String result = new String(buf, 0, len);
+
+		System.out.println("Answer='"+result+"'");
+
+		display(result);
+	}
+
+	public API(String command, String _ip, String _port) throws Exception
+	{
+		InetAddress ip;
+		int port;
+
+		try
+		{
+			ip = InetAddress.getByName(_ip);
+		}
+		catch (UnknownHostException uhe)
+		{
+			System.err.println("Unknown host " + _ip + ": " + uhe);
+			return;
+		}
+
+		try
+		{
+			port = Integer.parseInt(_port);
+		}
+		catch (NumberFormatException nfe)
+		{
+			System.err.println("Invalid port " + _port + ": " + nfe);
+			return;
+		}
+
+		process(command, ip, port);
+	}
+
+	public static void main(String[] params) throws Exception
+	{
+		String command = "summary";
+		String ip = "127.0.0.1";
+		String port = "4028";
+
+		if (params.length > 0 && params[0].trim().length() > 0)
+			command = params[0].trim();
+
+		if (params.length > 1 && params[1].trim().length() > 0)
+			ip = params[1].trim();
+
+		if (params.length > 2 && params[2].trim().length() > 0)
+			port = params[2].trim();
+
+		new API(command, ip, port);
+	}
+}