/** * */ package com.trendrr.oss.networking.http; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URI; import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.trendrr.oss.DynMap; import com.trendrr.oss.strest.models.StrestHeader; import com.trendrr.oss.strest.models.StrestHeader.ContentEncoding; import com.trendrr.oss.strest.models.StrestPacketBase; import com.trendrr.oss.strest.models.StrestHeader.Method; import com.trendrr.oss.strest.models.StrestHeader.Name; /** * @author Dustin Norlander * @created Jun 20, 2012 * * @deprecate dont use, this shit never really worked */ @Deprecated public class HttpRequest implements StrestPacketBase { protected static Log log = LogFactory.getLog(HttpRequest.class); protected Map<String,String> headers = new HashMap<String,String>(); protected String protocol = "HTTP"; protected float protocolVersion = 1.1f; protected Method method = Method.GET; protected byte[] content; protected String path = "/"; protected String host; protected boolean isSSL = false; public boolean isSSL() { return isSSL; } public void setSSL(boolean isSSL) { this.isSSL = isSSL; } public Method getMethod() { return method; } public void setMethod(Method method) { this.method = method; } public void setMethod(String method) { this.method = Method.instance(method); } public String getPath() { return path; } public void setPath(String path) { this.path = path; } public String getHost() { return host; } public void setHost(String host) { this.host = host; } public static void main(String ...strings) throws UnsupportedEncodingException { HttpRequest test = new HttpRequest(); test.setUrl("http://strest.trendrr.com?test=test2"); test.addHeader("Etag", "3f80f-1b6-3e1cb03b"); // test.setContent("text", "THIS IS SOME CONTENT".getBytes()); System.out.println(new String(test.toByteArray(), "utf8")); } /** * sets the uri and host * @param url */ public void setUrl(String url) { if (!url.startsWith("http")) { url = "http://" + url; } URI uri = URI.create(url); if (uri.getPort() <= 0) { this.host = uri.getHost(); } else { this.host = uri.getHost() + ":" + uri.getPort(); } this.path = uri.getPath(); if (this.path.isEmpty()) { this.path = "/"; } if (uri.getQuery() != null) { this.path += "?" + uri.getQuery(); } if (uri.getScheme().equals("https")) { this.isSSL = true; } } public void addHeader(String header, String value) { headers.put(header, value); } public void addHeader(Name header, String value) { this.addHeader(header.getHttpName(), value); } public String getHeader(Name header) { return this.getHeader(header.getHttpName()); } public String getHeader(String header) { return this.headers.get(header); } /* (non-Javadoc) * @see com.trendrr.oss.networking.strest.v2.models.StrestPacketBase#setProtocol(java.lang.String, float) */ @Override public void setProtocol(String protocolName, float version) { this.protocol = protocolName; this.protocolVersion = version; } /* (non-Javadoc) * @see com.trendrr.oss.networking.strest.v2.models.StrestPacketBase#getProtocolVersion() */ @Override public float getProtocolVersion() { return this.protocolVersion; } /* (non-Javadoc) * @see com.trendrr.oss.networking.strest.v2.models.StrestPacketBase#getProtocolName() */ @Override public String getProtocolName() { return this.protocol; } /** * For strest only. you can ignore this... */ @Override public void setTxnId(String id) { this.addHeader(Name.TXN_ID, id); } /** * for strest only. you can ignore this.. */ @Override public String getTxnId() { return this.getHeader(Name.TXN_ID); } /* (non-Javadoc) * @see com.trendrr.oss.networking.strest.v2.models.StrestPacketBase#cleanup() */ @Override public void cleanup() { this.content = null; this.headers = null; } public String getHeaderAsString() { StringBuilder str = new StringBuilder(); //Status Line str.append(this.method.getHttp()) .append(" ") .append(this.path) .append(" ") .append(this.protocol) .append("/") .append(this.protocolVersion) .append(StrestHeader.HTTP_LINE_ENDING); str.append("Host: ") .append(this.host) .append(StrestHeader.HTTP_LINE_ENDING); for (String h : this.headers.keySet()) { str.append(h) .append(": ") .append(this.getHeader(h)) .append(StrestHeader.HTTP_LINE_ENDING); } if (this.content != null) { //content length str.append("Content-Length: ") .append(this.content.length) .append(StrestHeader.HTTP_LINE_ENDING); } str.append(StrestHeader.HTTP_LINE_ENDING); return str.toString(); } /* (non-Javadoc) * @see com.trendrr.oss.networking.strest.v2.models.StrestPacketBase#toByteArray() */ @Override public byte[] toByteArray() { byte[] headers; try { headers = this.getHeaderAsString().getBytes("utf8"); if (this.content == null || this.content.length == 0) return headers; ByteBuffer buf = ByteBuffer.allocate(headers.length + this.content.length); buf.put(headers); buf.put(this.content); return buf.array(); } catch (UnsupportedEncodingException e) { log.error("Caught", e); } return null; } /* (non-Javadoc) * @see com.trendrr.oss.strest.models.StrestPacketBase#setContent(java.lang.String, long, java.io.InputStream) */ @Override public void setContent(ContentEncoding contentEncoding, int contentLength, InputStream stream) throws Exception { // TODO Auto-generated method stub } /* (non-Javadoc) * @see com.trendrr.oss.strest.models.StrestPacketBase#getContentEncoding() */ @Override public ContentEncoding getContentEncoding() { // TODO Auto-generated method stub return null; } /* (non-Javadoc) * @see com.trendrr.oss.strest.models.StrestPacketBase#getContentLength() */ @Override public int getContentLength() { // TODO Auto-generated method stub return 0; } /* (non-Javadoc) * @see com.trendrr.oss.strest.models.StrestPacketBase#getContent() */ @Override public InputStream getContent() throws Exception { // TODO Auto-generated method stub return null; } /* (non-Javadoc) * @see com.trendrr.oss.DynMapConvertable#toDynMap() */ @Override public DynMap toDynMap() { log.warn("To dynmap not implemented int httprequest"); return null; } /* (non-Javadoc) * @see com.trendrr.oss.strest.models.StrestPacketBase#setParams(com.trendrr.oss.DynMap) */ @Override public void setParams(DynMap params) { // TODO Auto-generated method stub } /* (non-Javadoc) * @see com.trendrr.oss.strest.models.StrestPacketBase#getParams() */ @Override public DynMap getParams() { // TODO Auto-generated method stub return null; } }