nextcloud/lib/public/OpenMetrics/Metric.php
Daniel Kesselberg 25ca85e329
docs(ocp): Add since tag
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2026-04-28 11:17:27 +02:00

42 lines
877 B
PHP

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCP\OpenMetrics;
/**
* @since 33.0.0
*/
final readonly class Metric {
/**
* @since 33.0.0
*/
public function __construct(
public int|float|bool|MetricValue $value = false,
/** @var string[] */
public array $labels = [],
public int|float|null $timestamp = null,
) {
$this->validateLabels();
}
/**
* @since 33.0.0
*/
public function label(string $name): ?string {
return $this->labels[$name] ?? null;
}
private function validateLabels(): void {
foreach ($this->labels as $label => $_value) {
if (preg_match('/^[a-zA-Z_][a-zA-Z0-9_]*$/', (string)$label) !== 1) {
throw new \InvalidArgumentException('Invalid OpenMetrics label name: "' . $label . '"');
}
}
}
}