<?php
// api_proxy.php - Proxy Local pour l'API Distante
// Ce fichier permet de contourner les problèmes CORS et de sécurité en faisant passer les requêtes par le serveur local PHP

// Configuration de l'API distante
$REMOTE_API_URL = "https://api.transub.dz/apiggr/retraitdepot/api.php";

// Autoriser les requêtes CORS
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Authorization");
header("Content-Type: application/json; charset=UTF-8");

// Gérer les requêtes OPTIONS (preflight CORS)
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit();
}

// Récupérer l'endpoint depuis les paramètres
$endpoint = isset($_GET['endpoint']) ? $_GET['endpoint'] : '';
if (empty($endpoint)) {
    http_response_code(400);
    echo json_encode(['success' => false, 'message' => 'Paramètre endpoint manquant']);
    exit();
}

// Construire l'URL complète avec l'endpoint
$url = $REMOTE_API_URL . '/' . $endpoint;

// Récupérer les autres paramètres de requête (sans l'endpoint)
$queryParams = $_GET;
unset($queryParams['endpoint']);
if (!empty($queryParams)) {
    $url .= '?' . http_build_query($queryParams);
}

// Initialiser cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Désactiver la vérification SSL pour le dev local
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // Timeout de 30 secondes

// Gérer la méthode POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    curl_setopt($ch, CURLOPT_POST, true);
    
    // Lire le corps de la requête (JSON)
    $input = file_get_contents('php://input');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $input);
    
    // Transférer les en-têtes importants
    $headers = [
        'Content-Type: application/json',
        'Content-Length: ' . strlen($input)
    ];
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}

// Ajouter un user-agent pour éviter les blocages
$headers[] = 'User-Agent: TransubApp-Android/1.0';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

// Exécuter la requête
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);

// Gérer les erreurs cURL
if (curl_errno($ch)) {
    http_response_code(500);
    echo json_encode([
        'success' => false, 
        'message' => 'Erreur Proxy Local : ' . curl_error($ch),
        'error_type' => 'proxy_error'
    ]);
} else {
    // Renvoyer le code HTTP et la réponse
    http_response_code($httpCode);
    
    // Définir le content-type approprié
    if ($contentType) {
        header('Content-Type: ' . $contentType);
    } else {
        header('Content-Type: application/json');
    }
    
    echo $response;
}

curl_close($ch);
?>