diff --git a/pom.xml b/pom.xml index 790ed65a..bffb6b3b 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ 1.13.8 2.3.4 0.11.5 - 1.1-127-gf49982f + 1.1-142-gfed0320 1.0-127-g6c65524 @@ -273,7 +273,7 @@ org.jitsi jicoco-metrics - 1.1-133-g768ef2e + ${jicoco.version} compile diff --git a/src/main/kotlin/org/jitsi/jibri/api/http/HttpApi.kt b/src/main/kotlin/org/jitsi/jibri/api/http/HttpApi.kt index ab6f1483..8974a888 100644 --- a/src/main/kotlin/org/jitsi/jibri/api/http/HttpApi.kt +++ b/src/main/kotlin/org/jitsi/jibri/api/http/HttpApi.kt @@ -18,6 +18,7 @@ package org.jitsi.jibri.api.http import io.ktor.http.ContentType import io.ktor.http.HttpStatusCode +import io.ktor.http.parseHeaderValue import io.ktor.serialization.jackson.jackson import io.ktor.server.application.Application import io.ktor.server.application.call @@ -30,7 +31,6 @@ import io.ktor.server.routing.get import io.ktor.server.routing.post import io.ktor.server.routing.route import io.ktor.server.routing.routing -import io.prometheus.client.exporter.common.TextFormat import jakarta.ws.rs.core.Response import org.jitsi.jibri.FileRecordingRequestParams import org.jitsi.jibri.JibriBusyException @@ -138,26 +138,10 @@ class HttpApi( if (StatsConfig.enablePrometheus) { logger.info("Enabling prometheus interface at :$port/metrics") get("/metrics") { - val accept = call.request.headers["Accept"] - when { - accept?.startsWith("application/openmetrics-text") == true -> - call.respondText( - JibriMetricsContainer.getPrometheusMetrics(TextFormat.CONTENT_TYPE_OPENMETRICS_100), - contentType = ContentType.parse(TextFormat.CONTENT_TYPE_OPENMETRICS_100) - ) - - accept?.startsWith("text/plain") == true -> - call.respondText( - JibriMetricsContainer.getPrometheusMetrics(TextFormat.CONTENT_TYPE_004), - contentType = ContentType.parse(TextFormat.CONTENT_TYPE_004) - ) - - else -> - call.respondText( - JibriMetricsContainer.jsonString, - contentType = ContentType.parse("application/json") - ) - } + val accepts = + parseHeaderValue(call.request.headers["Accept"]).sortedBy { it.quality }.map { it.value } + val (metrics, contentType) = JibriMetricsContainer.getMetrics(accepts) + call.respondText(metrics, contentType = ContentType.parse(contentType)) } } }