All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.lightbody.bmp.proxy.HttpObject Maven / Gradle / Ivy

The newest version!
package net.lightbody.bmp.proxy;

import org.apache.commons.io.IOUtils;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.zip.GZIPInputStream;

public class HttpObject {
    private int objectNum;
    private Date start;
    // TODO: Bad things will happen in Blocks if this is not set.
    // General problem of mutable object whose constructor does not
    // fully construct.  FIX.
    private Date end;
    private long timeToFirstByte;
    private long timeToLastByte;
    private long bytes;
    private String url;
    private int responseCode;
    private String responseMessage;
    private String method;
    private String protocol;
    private String protocalVersion;
    private String host;
    private String path;
    private String queryString;
    // headers, cookies
    // List> ?? best way to do it? all are ugly
    private Map requestHeaders;
    //private Map requestCookies; // Redundant with headers
    private Map responseHeaders;
    private byte[] responseBytes;
    private String responseString;


    public HttpObject() {
    }

    public HttpObject(Date start, URL url, String method) {
        this.start = start;
        this.url = url.toExternalForm();
        this.method = method;
        this.protocol = url.getProtocol();
        this.host = url.getHost();
        this.path = url.getPath();
        this.queryString = url.getQuery();
    }

    public void setObjectNum(int objectNum) {
        this.objectNum = objectNum;
    }

    public void setResponseCode(int responseCode) {
        this.responseCode = responseCode;
    }

    public void setResponseMessage(String responseMessage) {
        this.responseMessage = responseMessage;
    }

    public String getResponseMessage() {
        return responseMessage;
    }

    public void setBytes(long bytes) {
        this.bytes = bytes;
    }

    public void setTimeToLastByte(long timeToLastByte) {
        this.timeToLastByte = timeToLastByte;
    }

    public void setTimeToFirstByte(long timeToFirstByte) {
        this.timeToFirstByte = timeToFirstByte;
    }

    public int getObjectNum() {
        return objectNum;
    }

    public Date getStart() {
        return start;
    }

    public long getTimeToFirstByte() {
        return timeToFirstByte;
    }

    public long getTimeToLastByte() {
        return timeToLastByte;
    }

    public long getBytes() {
        return bytes;
    }

    public String getUrl() {
        return url;
    }

    public int getResponseCode() {
        return responseCode;
    }

    public String getMethod() {
        return method;
    }

    public String getProtocol() {
        return protocol;
    }

    public String getProtocolVersion() {
        return protocalVersion;
    }

    public void setProtocolVersion(String protocalVersion) {
        this.protocalVersion = protocalVersion;
    }

    public String getHost() {
        return host;
    }

    public String getPath() {
        return path;
    }

    public String getQueryString() {
        return queryString;
    }

    public void setEnd(Date end) {
        this.end = end;
    }

    public Date getEnd() {
        return end;
    }

    public void setResponseHeaders(Map responseHeaders) {
        this.responseHeaders = responseHeaders;
    }

    public Map getResponseHeaders() {
        if (responseHeaders == null) {
            return new HashMap();
        }
        return responseHeaders;
    }

    public void setRequestHeaders(Map requestHeaders) {
        this.requestHeaders = requestHeaders;
    }

    public Map getRequestHeaders() {
        if (requestHeaders == null) {
            return new HashMap();
        }
        return requestHeaders;
    }

    public byte[] getResponseBytes() {
        return responseBytes;
    }

    public String getResponseString() {
        return responseString;
    }

    public void setResponseContent(byte[] bytes) {
        responseBytes = bytes;
        try {
            responseString = new String(bytes, "UTF-8");
        }
        catch (UnsupportedEncodingException e) {
            // leave null
        }
        try {
            // java is ridiculous.  Attempt to unzip content.  Ignore deflate.
            responseString = new String(IOUtils.toByteArray(new GZIPInputStream(new ByteArrayInputStream(responseBytes))), "UTF-8");
        }
        catch (IOException e) {
            //e.printStackTrace();
            // gunzip failed, left in original form
        }
    }


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy