001package io.prometheus.metrics.exporter.httpserver;
002
003import com.sun.net.httpserver.HttpExchange;
004import com.sun.net.httpserver.HttpHandler;
005import io.prometheus.metrics.annotations.StableApi;
006import io.prometheus.metrics.config.PrometheusProperties;
007import io.prometheus.metrics.exporter.common.PrometheusScrapeHandler;
008import io.prometheus.metrics.model.registry.PrometheusRegistry;
009import java.io.IOException;
010
011/** Handler for the /metrics endpoint */
012@StableApi
013public class MetricsHandler implements HttpHandler {
014
015  private final PrometheusScrapeHandler prometheusScrapeHandler;
016
017  public MetricsHandler() {
018    prometheusScrapeHandler = new PrometheusScrapeHandler();
019  }
020
021  public MetricsHandler(PrometheusRegistry registry) {
022    prometheusScrapeHandler = new PrometheusScrapeHandler(registry);
023  }
024
025  public MetricsHandler(PrometheusProperties config) {
026    prometheusScrapeHandler = new PrometheusScrapeHandler(config);
027  }
028
029  public MetricsHandler(PrometheusProperties config, PrometheusRegistry registry) {
030    prometheusScrapeHandler = new PrometheusScrapeHandler(config, registry);
031  }
032
033  @Override
034  public void handle(HttpExchange t) throws IOException {
035    prometheusScrapeHandler.handleRequest(new HttpExchangeAdapter(t));
036  }
037}