95 lines
2.8 KiB
PHP
95 lines
2.8 KiB
PHP
<?php
|
|
require_once dirname(__DIR__, 2) . '/vendor/autoload.php';
|
|
require_once __DIR__ . '/class/VisualLimsApiClient.class.php';
|
|
|
|
header('Content-Type: application/json');
|
|
|
|
// Disable PHP error display
|
|
ini_set('display_errors', '0');
|
|
error_reporting(E_ALL);
|
|
|
|
try {
|
|
$api = VisualLimsApiClient::getInstance(); // also loads dotenv
|
|
|
|
// In simulate mode: return fake users
|
|
if (($_ENV['SIMULATE_EXPORT_LIMS'] ?? '') === 'true') {
|
|
$fakeUsers = [
|
|
[
|
|
'IdUtente' => 1001,
|
|
'Nominativo' => 'Utente Simulato 1001'
|
|
],
|
|
[
|
|
'IdUtente' => 1002,
|
|
'Nominativo' => 'Utente Simulato 1002'
|
|
]
|
|
];
|
|
|
|
echo json_encode(['value' => $fakeUsers]);
|
|
exit;
|
|
}
|
|
|
|
// OData parameters
|
|
$params = [];
|
|
|
|
// Build query string
|
|
$queryString = http_build_query($params);
|
|
|
|
// Final endpoint
|
|
$endpoint = "Utente?$queryString";
|
|
|
|
// Function to execute request with retry
|
|
function makeApiRequest($api, $endpoint, $maxRetries = 3)
|
|
{
|
|
for ($retry = 0; $retry < $maxRetries; $retry++) {
|
|
try {
|
|
$data = $api->get($endpoint);
|
|
|
|
// Save response for debug
|
|
file_put_contents(__DIR__ . '/utenti_response.json', json_encode($data, JSON_PRETTY_PRINT));
|
|
|
|
return $data;
|
|
} catch (Exception $e) {
|
|
$errorMessage = $e->getMessage();
|
|
|
|
// Retry only on token/auth-related issue
|
|
if (
|
|
strpos($errorMessage, 'HTTP 400') !== false &&
|
|
strpos($errorMessage, 'Cannot persist the object') !== false
|
|
) {
|
|
try {
|
|
$api->refreshToken(); // must exist in VisualLimsApiClient
|
|
error_log("Tentativo $retry: Refresh token eseguito per endpoint $endpoint");
|
|
} catch (Exception $refreshEx) {
|
|
error_log("Errore durante il refresh del token: " . $refreshEx->getMessage());
|
|
throw new Exception("Impossibile eseguire il refresh del token: " . $refreshEx->getMessage());
|
|
}
|
|
|
|
usleep(500000); // 500 ms
|
|
continue;
|
|
}
|
|
|
|
throw $e;
|
|
}
|
|
}
|
|
|
|
throw new Exception("Massimo numero di tentativi raggiunto per $endpoint");
|
|
}
|
|
|
|
// Execute request
|
|
$data = makeApiRequest($api, $endpoint);
|
|
|
|
echo json_encode($data);
|
|
} catch (Exception $e) {
|
|
http_response_code(500);
|
|
|
|
$errorResponse = [
|
|
'error' => $e->getMessage(),
|
|
'file' => $e->getFile(),
|
|
'line' => $e->getLine(),
|
|
'trace' => $e->getTraceAsString()
|
|
];
|
|
|
|
error_log("Errore in get_utenti.php: " . json_encode($errorResponse));
|
|
echo json_encode($errorResponse);
|
|
}
|