/** * */ package com.trendrr.oss.networking.http; import java.io.InputStream; import java.io.UnsupportedEncodingException; 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.Regex; import com.trendrr.oss.TypeCast; import com.trendrr.oss.exceptions.TrendrrParseException; import com.trendrr.oss.strest.models.StrestHeader.ContentEncoding; import com.trendrr.oss.strest.models.StrestHeader.TxnStatus; import com.trendrr.oss.strest.models.StrestPacketBase; import com.trendrr.oss.strest.models.StrestResponse; import com.trendrr.oss.strest.models.StrestHeader.Name; import com.trendrr.oss.strest.models.json.StrestJsonResponse; /** * @author Dustin Norlander * @created Jun 20, 2012 * @deprecate dont use, this shit never really worked */ @Deprecated public class HttpResponse implements StrestResponse { protected static Log log = LogFactory.getLog(HttpResponse.class); protected String protocol = "HTTP"; protected float protocolVersion = 1.1f; protected Map<String,String> headers = new HashMap<String,String>(); protected byte[] content; public static HttpResponse parse(String headers) throws TrendrrParseException{ try { String [] lines = headers.split("\n"); HttpResponse response = new HttpResponse(); int code = 0; for (String ln : lines) { if (code == 0) { //status line code = TypeCast.cast(Integer.class, Regex.matchFirst(ln, "[0-9]{3}", false)); response.setStatusCode(code); response.setStatusMessage(ln.split("[0-9]{3}")[1].trim()); System.out.println("CODE: " + code); System.out.println("STATUS: " + response.getStatusMessage()); //TODO: parse the protocol (WHO really cares though?) continue; } int ind = ln.indexOf(':'); String header = ln.substring(0, ind); String val = ln.substring(ind+1, ln.length()).trim(); response.addHeader(header, val); } return response; } catch (Exception x) { throw new TrendrrParseException("Bad http headers\n***********\n" +headers + "\n**********", x); } } int statusCode = 200; String statusMessage = "OK"; public int getStatusCode() { return statusCode; } public void setStatusCode(int statusCode) { this.statusCode = statusCode; } public String getStatusMessage() { return statusMessage; } public void setStatusMessage(String statusMessage) { this.statusMessage = statusMessage; } public void setContent(byte[] content) { this.content = content; } 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); } public void setContent(DynMap content) { try { this.setContent("application/json", content.toJSONString().getBytes("utf8")); } catch (UnsupportedEncodingException e) { log.error("Caught", e); } } public void setContent(String contentType, byte[] bytes) { this.addHeader("Content-Type", contentType); this.content = bytes; } public byte[] getContentBytes() { return content; } /* (non-Javadoc) * @see com.trendrr.oss.networking.strest.v2.models.StrestPacketBase#cleanup() */ @Override public void cleanup() { // TODO Auto-generated method stub } /* (non-Javadoc) * @see com.trendrr.oss.networking.strest.v2.models.StrestPacketBase#toByteArray() */ @Override public byte[] toByteArray() { // TODO Auto-generated method stub 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#getContent() */ @Override public InputStream getContent() throws Exception { // TODO Auto-generated method stub return null; } /* (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.DynMapConvertable#toDynMap() */ @Override public DynMap toDynMap() { try { StrestJsonResponse response = new StrestJsonResponse(this); return response.toDynMap(); } catch (Exception x) { log.error("caught", x); } return null; } /* (non-Javadoc) * @see com.trendrr.oss.strest.models.StrestResponse#setStatus(int, java.lang.String) */ @Override public void setStatus(int code, String message) { // TODO Auto-generated method stub } /* (non-Javadoc) * @see com.trendrr.oss.strest.models.StrestResponse#setTxnStatus(com.trendrr.oss.strest.models.StrestHeader.TxnStatus) */ @Override public void setTxnStatus(TxnStatus status) { // TODO Auto-generated method stub } /* (non-Javadoc) * @see com.trendrr.oss.strest.models.StrestResponse#getTxnStatus() */ @Override public TxnStatus getTxnStatus() { // TODO Auto-generated method stub 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; } }