<?php

namespace App\Service\Weather;

use Symfony\Contracts\HttpClient\HttpClientInterface;

/**
 * Récupère les données de vent horaire depuis Open-Meteo (gratuit, sans clé).
 * Utilisé pour la simulation de dérive des sargasses.
 */
class OpenMeteoClient
{
    private const BASE_URL = 'https://api.open-meteo.com/v1/forecast';

    public function __construct(private HttpClientInterface $httpClient) {}

    /**
     * Retourne les vecteurs de vent heure par heure pour un point géographique.
     * Période couverte : 3 jours (suffisant pour H+48).
     *
     * @return array<int, array{time: string, speed: float, direction: float}>
     *         Tableau indexé par heure UTC (0..71)
     */
    public function getHourlyWind(float $lat, float $lng): array
    {
        $response = $this->httpClient->request('GET', self::BASE_URL, [
            'query' => [
                'latitude'        => $lat,
                'longitude'       => $lng,
                'hourly'          => 'wind_speed_10m,wind_direction_10m',
                'wind_speed_unit' => 'ms',
                'forecast_days'   => 3,
                'timezone'        => 'UTC',
            ],
        ]);

        $data   = $response->toArray();
        $hourly = $data['hourly'];

        $result = [];
        foreach ($hourly['time'] as $i => $time) {
            $result[] = [
                'time'      => $time,
                'speed'     => (float) ($hourly['wind_speed_10m'][$i] ?? 0),
                'direction' => (float) ($hourly['wind_direction_10m'][$i] ?? 0),
            ];
        }

        return $result;
    }
}
