import com.sun.net.httpserver.HttpServer;
import java.net.InetSocketAddress;
import java.nio.charset.StandardCharsets;

public class App {
    public static void main(String[] args) throws Exception {
        final String version;
        try (var input = App.class.getResourceAsStream("/version.txt")) {
            if (input == null) throw new IllegalStateException("version.txt missing");
            version = new String(input.readAllBytes(), StandardCharsets.UTF_8).trim();
        }
        var server = HttpServer.create(new InetSocketAddress("0.0.0.0", 8080), 0);
        server.createContext("/health", exchange -> {
            boolean ready = !version.equals("bad");
            byte[] body = (version + "\n").getBytes(StandardCharsets.UTF_8);
            exchange.getResponseHeaders().set("Content-Type", "text/plain; charset=utf-8");
            exchange.sendResponseHeaders(ready ? 200 : 503, body.length);
            try (var output = exchange.getResponseBody()) { output.write(body); }
        });
        server.start();
        Runtime.getRuntime().addShutdownHook(new Thread(() -> server.stop(1)));
        System.out.println("started version=" + version);
    }
}
