<?php
/**
 * @package Hafenstudios\Kurato
 */

namespace Hafenstudios\Kurato\Cockpit;

defined( 'ABSPATH' ) || exit;

/**
 * CORS-Kopfzeilen fuer die beiden Kurato-Namespaces (COCKPIT-API.md, Abschnitt
 * CORS). Reine Entscheidungslogik; das Senden macht der Connector.
 *
 * Null-Risiko-Default: ohne abgeschlossenes Pairing keinerlei CORS-Header. Nie
 * Wildcard, immer exakt die konfigurierte Origin, immer Vary: Origin.
 */
class Cors {

	/**
	 * Liefert die zu sendenden Kopfzeilen fuer eine Route - oder ein leeres
	 * Array, wenn keine gesendet werden duerfen.
	 *
	 * @param string $route  REST-Route (z. B. kurato-cockpit/v1/session).
	 * @param bool   $paired Ist die Site gekoppelt?
	 * @param string $origin Konfigurierte App-Origin.
	 * @return array<string, string>
	 */
	public static function headers( string $route, bool $paired, string $origin ): array {
		if ( ! $paired || '' === $origin ) {
			return array();
		}
		if ( ! Authenticator::is_cockpit_route( $route ) ) {
			return array();
		}

		return array(
			'Access-Control-Allow-Origin'  => $origin,
			'Vary'                         => 'Origin',
			'Access-Control-Allow-Headers' => 'Authorization, Content-Type',
			'Access-Control-Allow-Methods' => 'GET, POST, PUT, DELETE, OPTIONS',
			'Access-Control-Max-Age'       => '600',
		);
	}
}
