@Override public void handle( final HttpRequest httpRequest, final HttpAsyncExchange httpAsyncExchange, final HttpContext httpContext ) throws HttpException, IOException { LOGGER.trace( "handling [{}]", httpRequest ); final HttpInetConnection connection = ( HttpInetConnection ) httpContext .getAttribute( HttpCoreContext.HTTP_CONNECTION ); final InetAddress remoteAddress = connection.getRemoteAddress(); final HttpResponse response = httpAsyncExchange.getResponse(); final String httpContextProtocol = String.valueOf( httpContext.getAttribute( "protocol" ) ); if( Protocol.LOCAL.equals( this.protocol ) && !Inet.isLocalAddress( remoteAddress ) ) { response.setStatusCode( HTTP_FORBIDDEN ); } else { Request request = new Request( httpRequest, new Context( location, remoteAddress, httpContextProtocol ) ); handler.handle( request, new Response( response, corsPolicy.getCors( request ) ) ); } httpAsyncExchange.submitResponse(); }
public void failed(final Exception ex) { synchronized (this.httpExchange) { if (this.completed) { return; } this.completed = true; this.httpExchange.setException(ex); HttpAsyncExchange responseTrigger = this.httpExchange.getResponseTrigger(); if (responseTrigger != null && !responseTrigger.isCompleted()) { System.out.println("[client<-proxy] " + this.httpExchange.getId() + " " + ex); ConsoleFactory.printToConsole("[client<-proxy] " + this.httpExchange.getId() + " " + ex,true); int status = HttpStatus.SC_INTERNAL_SERVER_ERROR; HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_0, status, EnglishReasonPhraseCatalog.INSTANCE.getReason(status, Locale.US)); String message = ex.getMessage(); if (message == null) { message = "Unexpected error"; } response.setEntity(new NStringEntity(message, ContentType.DEFAULT_TEXT)); responseTrigger.submitResponse(new BasicAsyncResponseProducer(response)); } } }
@Override public void handle( HttpRequest req, HttpAsyncExchange httpExchange, HttpContext context ) throws HttpException, IOException { String resource = location + Strings.substringAfter( req.getRequestLine().getUri(), prefix ); if( logger.isTraceEnabled() ) logger.trace( req.getRequestLine().toString() + " -> " + resource ); Optional<byte[]> file = Resources.read( getClass(), resource ); if( file.isPresent() ) { ByteArrayEntity entity = new ByteArrayEntity( file.get() ); entity.setContentType( mimeTypes.getContentType( req.getRequestLine().getUri() ) ); httpExchange.getResponse().setEntity( entity ); } else httpExchange.getResponse().setStatusCode( 404 ); }
@Override public void handle(final HttpRequest request, final HttpAsyncExchange httpexchange, final HttpContext context) { executor.schedule(new Runnable() { @Override public void run() { HttpResponse response = httpexchange.getResponse(); response.setStatusCode(HttpStatus.SC_OK); response.setEntity(new NStringEntity(("Slow hello world"), ContentType.create("text/html", "UTF-8"))); httpexchange.submitResponse(); } }, 50, TimeUnit.MILLISECONDS); }
private void sendError(Exception e, HttpAsyncExchange httpexchange) { e.printStackTrace(); HttpResponse response = httpexchange.getResponse(); response.setStatusCode(500); StringWriter stringWriter = new StringWriter(); e.printStackTrace(new PrintWriter(stringWriter)); response.setEntity(new NStringEntity(stringWriter.toString(), ContentType.create("text/plain", "UTF-8"))); httpexchange.submitResponse(); }
@Override public void handle(final HttpRequest request, final HttpAsyncExchange httpexchange, final HttpContext context) { HttpResponse response = httpexchange.getResponse(); response.setStatusCode(HttpStatus.SC_OK); response.setEntity(new NStringEntity("Hello world", ContentType.create("text/html", "UTF-8"))); httpexchange.submitResponse(); }
public void responseReceived(final HttpResponse response) { synchronized (this.httpExchange) { System.out.println("[proxy<-origin] " + this.httpExchange.getId() + " " + response.getStatusLine()); ConsoleFactory.printToConsole("[proxy<-origin] " + this.httpExchange.getId() + " " + response.getStatusLine(),true); this.httpExchange.setResponse(response); HttpAsyncExchange responseTrigger = this.httpExchange.getResponseTrigger(); if (responseTrigger != null && !responseTrigger.isCompleted()) { System.out.println("[client<-proxy] " + this.httpExchange.getId() + " response triggered"); ConsoleFactory.printToConsole("[client<-proxy] " + this.httpExchange.getId() + " response triggered",true); responseTrigger.submitResponse(new ProxyResponseProducer(this.httpExchange)); } } }
/** * Send simple http response. * * @param httpExchange * the http exchange * @param httpCode * the http code */ private void sendSimpleHttpResponse(HttpAsyncExchange httpExchange, int httpCode) { // get the empty response from the exchange HttpResponse httpResponse = httpExchange.getResponse(); // create and set the status line StatusLine statusLine = new BasicStatusLine(HttpVersion.HTTP_1_1, httpCode, EnglishReasonPhraseCatalog.INSTANCE.getReason(httpCode, Locale.ENGLISH)); httpResponse.setStatusLine(statusLine); // send the error response httpExchange.submitResponse(); }
public HttpAsyncExchange getResponseTrigger() { return this.responseTrigger; }
public void setResponseTrigger(final HttpAsyncExchange responseTrigger) { this.responseTrigger = responseTrigger; }
/** * Instantiates a new coap response worker. * * @param name * the name * @param coapRequest * the coap request * @param httpExchange * the http exchange * @param httpRequest * the http request */ public CoapResponseWorker(String name, Request coapRequest, HttpAsyncExchange httpExchange, HttpRequest httpRequest) { super(name); this.coapRequest = coapRequest; this.httpExchange = httpExchange; this.httpRequest = httpRequest; }