@Override public void handleReadFromClient(ChannelMediator channelMediator, HttpObject httpObject) { if (channelMediator == null) { throw new IllegalStateException("HRFC: ChannelMediator can't be null"); } try { if (httpObject instanceof HttpRequest) { HttpRequest httpRequest = (HttpRequest) httpObject; _clientRequestBuilder.interpretHttpRequest(httpRequest); _clientRequestBuilder.addHeaders(httpRequest); } if (httpObject instanceof HttpContent) { _clientRequestBuilder.appendHttpContent((HttpContent) httpObject); } } catch (IOException e) { throw new RuntimeException("HRFC: Failed to record HttpContent", e); } channelMediator.writeToServer(httpObject); }
@Override public void handleReadFromClient(ChannelMediator channelMediator, HttpObject httpObject) { if (channelMediator == null) { throw new IllegalStateException("HRFC: ChannelMediator can't be null"); } try { if (httpObject instanceof HttpRequest) { HttpRequest httpRequest = (HttpRequest) httpObject; _clientRequestBuilder.interpretHttpRequest(httpRequest); _clientRequestBuilder.addHeaders(httpRequest); } if (httpObject instanceof HttpContent) { _clientRequestBuilder.appendHttpContent((HttpContent) httpObject); } if (httpObject instanceof LastHttpContent) { HttpResponse httpResponse = playBack(); channelMediator.writeToClientAndDisconnect(httpResponse); } } catch (IOException e) { throw new RuntimeException("HRFC: Failed to replay HttpContent", e); } }
@Test public void testBuildWithUriTwoLegs() { HttpRequest nettyRequest1 = new DefaultFullHttpRequest(HttpVersion.HTTP_1_0, HttpMethod.GET, "finance"); RecordedHttpRequestBuilder recordedHttpRequestBuilder = new RecordedHttpRequestBuilder(nettyRequest1); HttpRequest nettyRequest2 = new DefaultFullHttpRequest(HttpVersion.HTTP_1_0, HttpMethod.GET, "google.com"); nettyRequest2.headers().set(HttpHeaders.Names.HOST, "www.google.com/"); recordedHttpRequestBuilder.addHeaders(nettyRequest2); RecordedHttpRequest recordedHttpRequest = recordedHttpRequestBuilder.build(); Assert.assertEquals(recordedHttpRequest.getUri().toString(), "https://www.google.com/finance"); }
@Test(expectedExceptions = IllegalStateException.class) public void testBuildWithUriTwoLegsIllegalUri() { HttpRequest nettyRequest1 = new DefaultFullHttpRequest(HttpVersion.HTTP_1_0, HttpMethod.GET, "file[/].html"); RecordedHttpRequestBuilder recordedHttpRequestBuilder = new RecordedHttpRequestBuilder(nettyRequest1); HttpRequest nettyRequest2 = new DefaultFullHttpRequest(HttpVersion.HTTP_1_0, HttpMethod.GET, "google.com"); nettyRequest2.headers().set(HttpHeaders.Names.HOST, "www.google.com/"); recordedHttpRequestBuilder.addHeaders(nettyRequest2); recordedHttpRequestBuilder.build(); }