in LocalHTTPServer.java [32:82]
public static void main(String[] args) throws IOException, URISyntaxException {
HttpServer server = HttpServer.create(new InetSocketAddress(80), 0);
server.setExecutor(Executors.newCachedThreadPool());
Executor httpClientExecutor = Executors.newWorkStealingPool();
var context = server.createContext("/WAGL/", (HttpExchange exchange) -> {
var contentURI = exchange.getRequestURI().getPath().substring(1);
var extension = contentURI.contains(".") ? contentURI.substring(contentURI.lastIndexOf(".")) : "";
var path = (isStaticContent(extension) ? "http://localhost:3000/" : "https://dev.azure.com/") + contentURI;
var requestMethod = exchange.getRequestMethod();
System.out.println("path " + path + " method " + exchange.getRequestMethod());
if (!".ico".equals(extension)) {
try (var outputStream = exchange.getResponseBody()) {
var responseHeaders = exchange.getResponseHeaders();
if (requestMethod.equalsIgnoreCase("options")) {
CORS_HEADERS.forEach(responseHeaders::put);
exchange.sendResponseHeaders(200, -1);
outputStream.flush();
} else {
var response = executeRequest(path, httpClientExecutor, exchange);
var body = response.body();
var headers = response.headers().map();
headers.forEach(responseHeaders::put);
CORS_HEADERS.forEach(responseHeaders::put);
//responseHeaders.put("Connection", List.of("close"));
exchange.sendResponseHeaders(200, 0);
outputStream.write(body);
outputStream.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
exchange.sendResponseHeaders(404, 0);
exchange.getResponseBody().flush();
}
});
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
server.removeContext(context);
server.stop(0);
}));
server.start();
}