String etag = null; String quotedEtag = null; if ("css".equals(exchange.getQueryString())) { buffer = Blobs.FILE_CSS_BUFFER.duplicate(); type = "text/css"; etag = Blobs.FILE_CSS_ETAG; quotedEtag = Blobs.FILE_CSS_ETAG_QUOTED; } else if ("js".equals(exchange.getQueryString())) { buffer = Blobs.FILE_JS_BUFFER.duplicate(); type = "application/javascript"; exchange.setStatusCode(StatusCodes.NOT_MODIFIED); return true; exchange.getResponseHeaders().put(Headers.CONTENT_LENGTH, String.valueOf(buffer.limit())); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, type); exchange.getResponseHeaders().put(Headers.ETAG, quotedEtag); if (Methods.HEAD.equals(exchange.getRequestMethod())) { exchange.endExchange(); return true; exchange.getResponseSender().send(buffer);
@Override public void onComplete(final HttpServerExchange exchange, final Sender sender) { sender.close(CALLBACK); }
@Override public void transferFrom(FileChannel channel, IoCallback callback) { // Transfer never caches delegate.transferFrom(channel, callback); }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { IMap<String, List<ServiceEndpoint>> serviceEndpoints = CacheStartupHookProvider.hz.getMap("serviceEndpoints"); String serviceId = exchange.getQueryParameters().get("serviceId").getFirst(); List<ServiceEndpoint> values = serviceEndpoints.get(serviceId); if(values == null || values.size() == 0) { setExchangeStatus(exchange, SERVICE_ENDPOINT_NOT_FOUND, serviceId); processAudit(exchange); return; } exchange.getResponseHeaders().add(new HttpString("Content-Type"), "application/json"); exchange.getResponseSender().send(Config.getInstance().getMapper().writeValueAsString(values)); processAudit(exchange); } }
@Override public void handleRequest(final HttpServerExchange exchange) throws Exception { if (!exchange.getRequestMethod().equals(HttpString.tryFromString("GET"))) { httpHandler.handleRequest(exchange); return; Map<String, Deque<String>> queryParams = exchange.getQueryParameters(); if (originalPage != null && !originalPage.isEmpty()) { page = Integer.parseInt(originalPage.getFirst()); if (originalPageSize != null && !originalPageSize.isEmpty()) { pageSize = Integer.parseInt(originalPageSize.getFirst()); HeaderValues accept = exchange.getRequestHeaders().get(Headers.ACCEPT); HeaderValues kieContentType = exchange.getRequestHeaders().get("X-KIE-ContentType"); exchange.getResponseHeaders().putAll(HttpString.tryFromString(name), value); }); exchange.getResponseHeaders().put(Headers.CONTENT_LENGTH, response.getBytes("UTF-8").length); exchange.getResponseSender().send(response);
@Override public void handleRequest(final HttpServerExchange exchange) throws Exception { if(exchange.getRequestMethod().equals(Methods.TRACE)) { exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "message/http"); StringBuilder body = new StringBuilder("TRACE "); body.append(exchange.getRequestURI()); if(!exchange.getQueryString().isEmpty()) { body.append('?'); body.append(exchange.getQueryString()); } body.append(' '); body.append(exchange.getProtocol().toString()); body.append("\r\n"); for(HeaderValues header : exchange.getRequestHeaders()) { for(String value : header) { body.append(header.getHeaderName()); body.append(": "); body.append(value); body.append("\r\n"); } } body.append("\r\n"); exchange.getResponseSender().send(body.toString()); } else { handler.handleRequest(exchange); } }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { Map<String, Object> body = (Map<String, Object>)exchange.getAttachment(BodyHandler.REQUEST_BODY); Provider provider = Config.getInstance().getMapper().convertValue(body, Provider.class); String provider_id = provider.getProviderId() ; IMap<String, Provider> providers = CacheStartupHookProvider.hz.getMap("providers"); if(providers.get(provider_id) == null) { setExchangeStatus(exchange, PROVIDER_ID_INVALID); } else { providers.set(provider_id, provider); exchange.getResponseSender().send(Config.getInstance().getMapper().writeValueAsString(provider)); } processAudit(exchange); } }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { exchange.getResponseHeaders().add(new HttpString("Content-Type"), "text/html"); exchange.getResponseSender().send(getDisplayHtml()); }
private void handleRequestNoHandler(HttpServerExchange exchange) { exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/html"); if (webInterfacePlugins.size() == 0) { String responseMessage = "No web interface installed.<br />Use <tt>sy plugin install simpleweb --snapshot</tt> " + "to install a web interface, then restart the daemon."; exchange.getResponseSender().send(responseMessage); } else { String webInterfacePluginsList = StringUtil.join(webInterfacePlugins, ", ", new StringJoinListener<WebInterfacePlugin>() { public String getString(WebInterfacePlugin webInterfacePlugin) { return webInterfacePlugin.getId(); } }); String responseMessage = "Only one web interface can be installed, but " + webInterfacePlugins.size() + " plugins found: " + webInterfacePluginsList + "<br />Use <tt>sy plugin remove <pluginId></tt> to remove plugins, then restart the daemon."; exchange.getResponseSender().send(responseMessage); } } }
/** * There are situations that the downstream service returns an error status response and we just * want to bubble up to the caller and eventually to the original caller. * * @param exchange HttpServerExchange * @param status error status */ default void setExchangeStatus(HttpServerExchange exchange, Status status) { exchange.setStatusCode(status.getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json"); status.setDescription(status.getDescription().replaceAll("\\\\", "\\\\\\\\")); exchange.getResponseSender().send(status.toString()); StackTraceElement[] elements = Thread.currentThread().getStackTrace(); logger.error(status.toString() + " at " + elements[2].getClassName() + "." + elements[2].getMethodName() + "(" + elements[2].getFileName() + ":" + elements[2].getLineNumber() + ")"); } }
private void processRequest(HttpServerExchange exchange) throws IOException { Map<String, Deque<String>> params = exchange.getQueryParameters(); boolean hasNonce = params.containsKey("nonce"); int refreshTime = 0; String receivedNonce = params.get("nonce").getFirst(); if (receivedNonce.equals(getRawNonce())) { boolean refresh = params.containsKey("refresh"); if (refresh) { String sval = params.get("refresh").getFirst(); refreshTime = Integer.parseInt(sval); if (refreshTime < 10) refreshTime = 10; exchange.getResponseHeaders().add(new HttpString("Refresh"), Integer.toString(refreshTime)); String scmd = params.get("Cmd").getFirst(); if (scmd.equals("INFO")) { processInfo(exchange); exchange.setStatusCode(StatusCodes.OK); exchange.getResponseHeaders().add(Headers.CONTENT_TYPE, "text/html; charset=ISO-8859-1"); final Sender resp = exchange.getResponseSender(); resp.send(buf.toString());
private void sendOai(HttpServerExchange exchange) throws IOException { String accept = exchange.getRequestHeaders().getFirst(Headers.ACCEPT); Deque<String> formatQueryParams = exchange.getQueryParameters().get(QUERY_PARAM_FORMAT); String formatParam = null; if (formatQueryParams != null) { formatParam = formatQueryParams.getFirst(); } // Default content type is YAML Format format = Format.YAML; // Check Accept, then query parameter "format" for JSON; else use YAML. if ((accept != null && accept.contains(Format.JSON.getMimeType())) || (formatParam != null && Format.JSON.getMimeType().equalsIgnoreCase(formatParam))) { format = Format.JSON; } String oai = getCachedOaiString(format); addCorsResponseHeaders(exchange); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, format.getMimeType()); exchange.getResponseSender().send(oai); }
if (exchange.isInIoThread()) { exchange.dispatch(this); return; } catch (Throwable e) { logger.error("Exception:", e); if(exchange.isResponseChannelAvailable()) { exchange.setStatusCode(fe.getStatus().getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json"); exchange.getResponseSender().send(fe.getStatus().toString()); logger.error(fe.getStatus().toString(), e); } else { setExchangeStatus(exchange, STATUS_RUNTIME_EXCEPTION); ApiException ae = (ApiException)e; exchange.setStatusCode(ae.getStatus().getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json"); exchange.getResponseSender().send(ae.getStatus().toString()); logger.error(ae.getStatus().toString(), e); } else {
@SuppressWarnings("unchecked") @Override public void handleRequest(HttpServerExchange exchange) throws Exception { Map<String, Object> body = (Map)exchange.getAttachment(BodyHandler.REQUEST_BODY); Client client = Config.getInstance().getMapper().convertValue(body, Client.class); if(client.getDerefClientId() != null && Client.ClientTypeEnum.EXTERNAL != client.getClientType()) { IMap<String, Client> clients = CacheStartupHookProvider.hz.getMap("clients"); Client originalClient = clients.get(clientId); if(originalClient == null) { setExchangeStatus(exchange, CLIENT_NOT_FOUND, clientId); IMap<String, User> users = CacheStartupHookProvider.hz.getMap("users"); if(!users.containsKey(ownerId)) { Status status = new Status(USER_NOT_FOUND, ownerId); exchange.setStatusCode(status.getStatusCode()); exchange.getResponseSender().send(status.toString()); processAudit(exchange); return; clients.set(clientId, client);
.getQueryParameters() .get(REPRESENTATION_FORMAT_KEY) == null ? null : exchange .getQueryParameters() .get(REPRESENTATION_FORMAT_KEY) .getFirst()) ).orElseGet(() -> ResponseType.forAcceptHeader( exchange .getRequestHeaders() .getFirst(Headers.ACCEPT)) ); if (responseType != null) { exchange.setStatusCode(HttpStatus.SC_OK); if (context.getContent() != null) { exchange.getResponseSender().send(context.getContent().toString()); exchange.endExchange();
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { final HttpString method = exchange.getRequestMethod(); if(!handlesMethod(method)) { next.handleRequest(exchange); final InetSocketAddress addr = exchange.getConnection().getLocalAddress(InetSocketAddress.class); if (!addr.isUnresolved() && addr.getPort() != config.getManagementSocketAddress().getPort() || !Arrays.equals(addr.getAddress().getAddress(), config.getManagementSocketAddress().getAddress().getAddress())) { next.handleRequest(exchange); if(exchange.isInIoThread()) { exchange.dispatch(this); UndertowLogger.ROOT_LOGGER.failedToProcessManagementReq(e); exchange.setStatusCode(StatusCodes.INTERNAL_SERVER_ERROR); exchange.getResponseHeaders().add(Headers.CONTENT_TYPE, CONTENT_TYPE); final Sender sender = exchange.getResponseSender(); sender.send("failed to process management request");
public static void main(final String[] args) { Undertow server = Undertow.builder() .addHttpListener( 8080, "0.0.0.0" ) .setHandler( exchange -> { String name = exchange.getQueryParameters() .getOrDefault( "name", new ArrayDeque<>( Collections.singleton( "nameless stranger" ) ) ) .getFirst(); exchange.getResponseHeaders().put( Headers.CONTENT_TYPE, "text/plain" ); exchange.getResponseSender().send( "Hello, " + name + "!" ); } ) .build(); server.start(); } }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { try { String timeoutString = exchange.getRequestHeaders().getFirst(TransactionConstants.TIMEOUT); if (timeoutString == null) { exchange.setStatusCode(StatusCodes.BAD_REQUEST); HttpRemoteTransactionMessages.MESSAGES.debugf("Exchange %s is missing %s header", exchange, TransactionConstants.TIMEOUT); return; } final Integer timeout = Integer.parseInt(timeoutString); exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, TransactionConstants.NEW_TRANSACTION.toString()); final LocalTransaction transaction = transactionContext.beginTransaction(timeout); final Xid xid = xidResolver.apply(transaction); final ByteArrayOutputStream out = new ByteArrayOutputStream(); Marshaller marshaller = MARSHALLER_FACTORY.createMarshaller(createMarshallingConf()); marshaller.start(new NoFlushByteOutput(Marshalling.createByteOutput(out))); marshaller.writeInt(xid.getFormatId()); marshaller.writeInt(xid.getGlobalTransactionId().length); marshaller.write(xid.getGlobalTransactionId()); marshaller.writeInt(xid.getBranchQualifier().length); marshaller.write(xid.getBranchQualifier()); marshaller.finish(); exchange.getResponseSender().send(ByteBuffer.wrap(out.toByteArray())); } catch (Exception e) { sendException(exchange, StatusCodes.INTERNAL_SERVER_ERROR, e); } } }
/** * Send a simple response string. * * @param exchange the http server exchange * @param response the response string */ static void sendResponse(final HttpServerExchange exchange, final String response) { exchange.setStatusCode(StatusCodes.OK); exchange.getResponseHeaders().add(Headers.CONTENT_TYPE, CONTENT_TYPE); final Sender sender = exchange.getResponseSender(); UndertowLogger.ROOT_LOGGER.mcmpSendingResponse(exchange.getSourceAddress(), exchange.getStatusCode(), exchange.getResponseHeaders(), response); sender.send(response); }
@Override public void handleRequest(HttpServerExchange exchange) throws Exception { exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/html"); exchange.setResponseCode(StatusCodes.OK); exchange.getResponseSender().send(html); exchange.endExchange(); } }