Package com.browserup.bup.filters
Class HarCaptureFilter
- java.lang.Object
-
- org.littleshoot.proxy.HttpFiltersAdapter
-
- com.browserup.bup.filters.HttpsAwareFiltersAdapter
-
- com.browserup.bup.filters.HarCaptureFilter
-
- All Implemented Interfaces:
org.littleshoot.proxy.HttpFilters
public class HarCaptureFilter extends HttpsAwareFiltersAdapter
-
-
Field Summary
-
Fields inherited from class com.browserup.bup.filters.HttpsAwareFiltersAdapter
HOST_ATTRIBUTE_NAME, IS_HTTPS_ATTRIBUTE_NAME, ORIGINAL_HOST_ATTRIBUTE_NAME
-
-
Constructor Summary
Constructors Constructor Description HarCaptureFilter(io.netty.handler.codec.http.HttpRequest originalRequest, io.netty.channel.ChannelHandlerContext ctx, Har har, java.lang.String currentPageRef, java.util.Set<CaptureType> dataToCapture)Create a new instance of the HarCaptureFilter that will capture request and response information.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcaptureConnectTiming()Populates ssl and connect timing info in the HAR if an entry for this client and server exist in the cache.protected voidcaptureHeaders(io.netty.handler.codec.http.HttpHeaders headers)protected voidcaptureQueryParameters(io.netty.handler.codec.http.HttpRequest httpRequest)protected voidcaptureRedirectUrl(io.netty.handler.codec.http.HttpResponse httpResponse)protected voidcaptureRequestContent(io.netty.handler.codec.http.HttpRequest httpRequest, byte[] fullMessage)protected voidcaptureRequestCookies(io.netty.handler.codec.http.HttpRequest httpRequest)protected voidcaptureRequestHeaders(io.netty.handler.codec.http.HttpRequest httpRequest)protected voidcaptureRequestHeaderSize(io.netty.handler.codec.http.HttpRequest httpRequest)protected voidcaptureRequestSize(io.netty.handler.codec.http.HttpContent httpContent)Adds the size of this httpContent to the requestBodySize.protected voidcaptureResponse(io.netty.handler.codec.http.HttpResponse httpResponse)protected voidcaptureResponseContent(io.netty.handler.codec.http.HttpResponse httpResponse, byte[] fullMessage)protected voidcaptureResponseCookies(io.netty.handler.codec.http.HttpResponse httpResponse)protected voidcaptureResponseHeaders(io.netty.handler.codec.http.HttpResponse httpResponse)protected voidcaptureResponseHeaderSize(io.netty.handler.codec.http.HttpResponse httpResponse)protected voidcaptureResponseMimeType(io.netty.handler.codec.http.HttpResponse httpResponse)protected voidcaptureResponseSize(io.netty.handler.codec.http.HttpContent httpContent)Adds the size of this httpContent to the responseBodySize.protected voidcaptureTrailingHeaders(io.netty.handler.codec.http.LastHttpContent lastHttpContent)io.netty.handler.codec.http.HttpResponseclientToProxyRequest(io.netty.handler.codec.http.HttpObject httpObject)protected voidpopulateAddressFromCache(io.netty.handler.codec.http.HttpRequest httpRequest)Populates the serverIpAddress field of the harEntry using the internal hostname->IP address cache.voidproxyToServerConnectionFailed()voidproxyToServerConnectionQueued()voidproxyToServerConnectionStarted()voidproxyToServerConnectionSucceeded(io.netty.channel.ChannelHandlerContext serverCtx)voidproxyToServerRequestSending()voidproxyToServerRequestSent()voidproxyToServerResolutionFailed(java.lang.String hostAndPort)java.net.InetSocketAddressproxyToServerResolutionStarted(java.lang.String resolvingServerHostAndPort)voidproxyToServerResolutionSucceeded(java.lang.String serverHostAndPort, java.net.InetSocketAddress resolvedRemoteAddress)io.netty.handler.codec.http.HttpObjectserverToProxyResponse(io.netty.handler.codec.http.HttpObject httpObject)voidserverToProxyResponseReceived()voidserverToProxyResponseReceiving()voidserverToProxyResponseTimedOut()-
Methods inherited from class com.browserup.bup.filters.HttpsAwareFiltersAdapter
getFullUrl, getHost, getHostAndPort, getOriginalUrl, isHttps
-
-
-
-
Constructor Detail
-
HarCaptureFilter
public HarCaptureFilter(io.netty.handler.codec.http.HttpRequest originalRequest, io.netty.channel.ChannelHandlerContext ctx, Har har, java.lang.String currentPageRef, java.util.Set<CaptureType> dataToCapture)Create a new instance of the HarCaptureFilter that will capture request and response information. If no har is specified in the constructor, this filter will do nothing. Regardless of the CaptureTypes specified indataToCapture, the HarCaptureFilter will always capture:- Request and response sizes
- HTTP request and status lines
- Page timing information
- Parameters:
originalRequest- the original HttpRequest from the HttpFiltersSource factoryhar- a reference to the ProxyServer's current HAR file at the time this request is received (can be null if HAR capture is not required)currentPageRef- the ProxyServer's currentPageRef at the time this request is received from the clientdataToCapture- the data types to capture for this request. null or empty set indicates only basic information will be captured (seeCaptureTypefor information on data collected for each CaptureType)ctx- ChannelHandlerContext ctx
-
-
Method Detail
-
clientToProxyRequest
public io.netty.handler.codec.http.HttpResponse clientToProxyRequest(io.netty.handler.codec.http.HttpObject httpObject)
- Specified by:
clientToProxyRequestin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
clientToProxyRequestin classorg.littleshoot.proxy.HttpFiltersAdapter
-
serverToProxyResponse
public io.netty.handler.codec.http.HttpObject serverToProxyResponse(io.netty.handler.codec.http.HttpObject httpObject)
- Specified by:
serverToProxyResponsein interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
serverToProxyResponsein classorg.littleshoot.proxy.HttpFiltersAdapter
-
serverToProxyResponseTimedOut
public void serverToProxyResponseTimedOut()
- Specified by:
serverToProxyResponseTimedOutin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
serverToProxyResponseTimedOutin classorg.littleshoot.proxy.HttpFiltersAdapter
-
captureQueryParameters
protected void captureQueryParameters(io.netty.handler.codec.http.HttpRequest httpRequest)
-
captureRequestHeaderSize
protected void captureRequestHeaderSize(io.netty.handler.codec.http.HttpRequest httpRequest)
-
captureRequestCookies
protected void captureRequestCookies(io.netty.handler.codec.http.HttpRequest httpRequest)
-
captureRequestHeaders
protected void captureRequestHeaders(io.netty.handler.codec.http.HttpRequest httpRequest)
-
captureTrailingHeaders
protected void captureTrailingHeaders(io.netty.handler.codec.http.LastHttpContent lastHttpContent)
-
captureHeaders
protected void captureHeaders(io.netty.handler.codec.http.HttpHeaders headers)
-
captureRequestContent
protected void captureRequestContent(io.netty.handler.codec.http.HttpRequest httpRequest, byte[] fullMessage)
-
captureResponseContent
protected void captureResponseContent(io.netty.handler.codec.http.HttpResponse httpResponse, byte[] fullMessage)
-
captureResponse
protected void captureResponse(io.netty.handler.codec.http.HttpResponse httpResponse)
-
captureResponseMimeType
protected void captureResponseMimeType(io.netty.handler.codec.http.HttpResponse httpResponse)
-
captureResponseCookies
protected void captureResponseCookies(io.netty.handler.codec.http.HttpResponse httpResponse)
-
captureResponseHeaderSize
protected void captureResponseHeaderSize(io.netty.handler.codec.http.HttpResponse httpResponse)
-
captureResponseHeaders
protected void captureResponseHeaders(io.netty.handler.codec.http.HttpResponse httpResponse)
-
captureRedirectUrl
protected void captureRedirectUrl(io.netty.handler.codec.http.HttpResponse httpResponse)
-
captureRequestSize
protected void captureRequestSize(io.netty.handler.codec.http.HttpContent httpContent)
Adds the size of this httpContent to the requestBodySize.- Parameters:
httpContent- HttpContent to size
-
captureResponseSize
protected void captureResponseSize(io.netty.handler.codec.http.HttpContent httpContent)
Adds the size of this httpContent to the responseBodySize.- Parameters:
httpContent- HttpContent to size
-
captureConnectTiming
protected void captureConnectTiming()
Populates ssl and connect timing info in the HAR if an entry for this client and server exist in the cache.
-
populateAddressFromCache
protected void populateAddressFromCache(io.netty.handler.codec.http.HttpRequest httpRequest)
Populates the serverIpAddress field of the harEntry using the internal hostname->IP address cache.- Parameters:
httpRequest- HTTP request to take the hostname from
-
proxyToServerResolutionStarted
public java.net.InetSocketAddress proxyToServerResolutionStarted(java.lang.String resolvingServerHostAndPort)
- Specified by:
proxyToServerResolutionStartedin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerResolutionStartedin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerResolutionFailed
public void proxyToServerResolutionFailed(java.lang.String hostAndPort)
- Specified by:
proxyToServerResolutionFailedin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerResolutionFailedin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerResolutionSucceeded
public void proxyToServerResolutionSucceeded(java.lang.String serverHostAndPort, java.net.InetSocketAddress resolvedRemoteAddress)- Specified by:
proxyToServerResolutionSucceededin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerResolutionSucceededin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerConnectionQueued
public void proxyToServerConnectionQueued()
- Specified by:
proxyToServerConnectionQueuedin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerConnectionQueuedin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerConnectionStarted
public void proxyToServerConnectionStarted()
- Specified by:
proxyToServerConnectionStartedin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerConnectionStartedin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerConnectionFailed
public void proxyToServerConnectionFailed()
- Specified by:
proxyToServerConnectionFailedin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerConnectionFailedin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerConnectionSucceeded
public void proxyToServerConnectionSucceeded(io.netty.channel.ChannelHandlerContext serverCtx)
- Specified by:
proxyToServerConnectionSucceededin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerConnectionSucceededin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerRequestSending
public void proxyToServerRequestSending()
- Specified by:
proxyToServerRequestSendingin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerRequestSendingin classorg.littleshoot.proxy.HttpFiltersAdapter
-
proxyToServerRequestSent
public void proxyToServerRequestSent()
- Specified by:
proxyToServerRequestSentin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
proxyToServerRequestSentin classorg.littleshoot.proxy.HttpFiltersAdapter
-
serverToProxyResponseReceiving
public void serverToProxyResponseReceiving()
- Specified by:
serverToProxyResponseReceivingin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
serverToProxyResponseReceivingin classorg.littleshoot.proxy.HttpFiltersAdapter
-
serverToProxyResponseReceived
public void serverToProxyResponseReceived()
- Specified by:
serverToProxyResponseReceivedin interfaceorg.littleshoot.proxy.HttpFilters- Overrides:
serverToProxyResponseReceivedin classorg.littleshoot.proxy.HttpFiltersAdapter
-
-