package jade.imtp.leap.http; import jade.imtp.leap.JICP.JICPPacket; import jade.imtp.leap.JICP.JICPProtocol; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; /** * * @author Eduard Drenth: Logica, 21-sep-2009 * */ public class HTTPHelper { public static final String RECIPIENT_ID_FIELD = "recipient-id"; public HTTPHelper() { } //#MIDP_EXCLUDE_BEGIN /** * @see HTTPHelper#readPacketFromHttp(java.io.InputStream) */ public static JICPPacket readPacketFromHttp(byte[] input) throws IOException { return readPacketFromHttp(new ByteArrayInputStream(input)); } public static JICPPacket readPacketFromHttp(InputStream is) throws IOException { HTTPRequest request = new HTTPRequest(); request.readFrom(is); if (request.getMethod().equals("GET")) { // This is a CONNECT_MEDIATOR String recipientID = request.getField(RECIPIENT_ID_FIELD); JICPPacket pkt = new JICPPacket(JICPProtocol.CONNECT_MEDIATOR_TYPE, JICPProtocol.DEFAULT_INFO, recipientID, null); return pkt; } else { // Read the JICPPacket from the HTTP request payload ByteArrayInputStream bis = new ByteArrayInputStream(request.getPayload()); return JICPPacket.readFrom(bis); } } public static HTTPResponse wrapInHttp(byte[] jicpPacket) throws IOException { // Create an HTTPResponse and set the serialized JICPPacket as payload HTTPResponse response = new HTTPResponse(); response.setCode("200"); response.setMessage("OK"); response.setHttpType("HTTP/1.1"); response.setPayload(jicpPacket); return response; } public static HTTPResponse wrapInHttp(JICPPacket pkt) throws IOException { ByteArrayOutputStream os = new ByteArrayOutputStream(pkt.getLength()); pkt.writeTo(os); return wrapInHttp(os.toByteArray()); } //#MIDP_EXCLUDE_END }