<?php

/**
 * @file
 * Hooks specifici per il modulo API Monitor Client.
 *
 * Questo file contiene la documentazione per gli hook esposti dal modulo.
 * Questi hooks permettono ad altri moduli di interagire con il sistema
 * di monitoraggio delle API.
 */

/**
 * @addtogroup hooks
 * @{
 */

/**
 * Permette di alterare le definizioni dei plugin ApiMonitorProbe.
 *
 * Questo hook viene invocato dopo che il Discovery dei plugin ha raccolto
 * tutte le definizioni dalle annotazioni (o attributi) delle classi.
 * Utile per cambiare dinamicamente soglie di uptime o descrizioni.
 *
 * @param array $definitions
 *   Array delle definizioni dei plugin, indicizzato dall'ID del plugin.
 */
function hook_api_monitor_probe_info_alter(array &$definitions) {
  // Esempio: Forza la soglia di uptime al 99% per un plugin specifico.
  if (isset($definitions['weather_api_check'])) {
    $definitions['weather_api_check']['uptime_threshold'] = 99;
  }
}

/**
 * Permette di alterare il report finale prima che venga processato dal Runner.
 *
 * Utile se si vogliono aggiungere metadati custom o logiche di filtraggio
 * dell'ultimo minuto prima che scattino gli alert o i salvataggi in DB.
 *
 * @param array $final_report
 *   Array dei risultati processati. Ogni elemento contiene:
 *   - id: ID dell'API.
 *   - status: UP, DOWN o ERROR_LOGIC.
 *   - response_time: float (ms).
 *   - status_code: int.
 *   - success: bool.
 */
function hook_api_monitor_report_alter(array &$final_report, string $api_id) {
  if ($api_id === 'weather_api_check') {
    // Alter information for the 'weather_api_check' API.
    $final_report['state'] = 'DOWN';
  }

}

/**
 * @} End of "addtogroup hooks".
 */
