Files
elixforms-web-pages/php/recupero-proposta-cct-da-contratti/search-contratti.php
T

77 lines
2.4 KiB
PHP

<?php
declare(strict_types=1);
header('Content-Type: application/json; charset=utf-8');
require_once __DIR__ . '/../../vendor/autoload.php';
use ElixForms\Common\HttpClient;
try {
// 1. Lettura dei parametri di input
$term = $_GET['term'] ?? '';
$codFis = $_GET['cod_fis'] ?? '';
if (empty($term) || strlen($term) < 3) {
http_response_code(400);
echo json_encode(['error' => 'Il parametro di ricerca "term" deve contenere almeno 3 caratteri.'], JSON_UNESCAPED_UNICODE);
exit;
}
if (empty($codFis)) {
http_response_code(400);
echo json_encode(['error' => 'Il parametro "cod_fis" (Codice Fiscale) è obbligatorio.'], JSON_UNESCAPED_UNICODE);
exit;
}
// 2. Caricamento configurazione
$configFile = __DIR__ . '/config.json';
if (!file_exists($configFile)) {
throw new \RuntimeException('File di configurazione config.json non trovato.');
}
$configJson = file_get_contents($configFile);
$config = json_decode($configJson, true);
if (json_last_error() !== JSON_ERROR_NONE || !isset($config['contrattiWS'])) {
throw new \RuntimeException('Configurazione del Web Service "contrattiWS" mancante o non valida.');
}
$wsConfig = $config['contrattiWS'];
$apiUrl = $wsConfig['apiUrl'] ?? '';
$apiUsername = $wsConfig['apiUsername'] ?? '';
$apiPassword = $wsConfig['apiPassword'] ?? '';
$apiKey = $wsConfig['apiKey'] ?? '';
// 3. Inizializzazione ed esecuzione della chiamata HTTP con HttpClient
$client = new HttpClient([
'X-Api-Key' => $apiKey,
'Accept' => 'application/json'
]);
// Configura autenticazione basic
$client->setBasicAuth($apiUsername, $apiPassword);
// Esegui la richiesta GET
$responseBody = $client->get($apiUrl, [
'cod_fis' => $codFis,
'term' => $term
]);
// Valida che la risposta sia in formato JSON corretto
json_decode($responseBody);
if (json_last_error() !== JSON_ERROR_NONE) {
throw new \RuntimeException('Il servizio contratti ha restituito una risposta in un formato non valido (non JSON).');
}
// Ritorna la risposta del WS direttamente
echo $responseBody;
} catch (\Throwable $e) {
http_response_code(500);
echo json_encode([
'error' => 'Errore durante la ricerca dei contratti.',
'message' => 'Servizio temporaneamente non disponibile o risposta non valida.'
], JSON_UNESCAPED_UNICODE);
}