<?php
require_once '../php/Repositorio/RetornaDadosAPI.php';

// Crie uma instância da classe RetAPI
$retAPI = new RetAPI();

function arrayToXml($data, &$xmlData) {
    foreach ($data as $key => $value) {
        if (is_array($value) || is_object($value)) {
            $subnode = $xmlData->addChild(is_numeric($key) ? "item$key" : $key);
            arrayToXml((array)$value, $subnode);
        } else {
            // Use addChild with a CDATA section to prevent encoding
            $key = is_numeric($key) ? "item$key" : $key;
            $subnode = $xmlData->addChild($key);
            if (preg_match('/[<>&\'"]/',$value)) {
                $subnode->addCData($value);
            } else {
                $subnode[0] = $value;
            }
        }
    }
}

// Extending SimpleXMLElement to add CDATA support
class SimpleXMLExtended extends SimpleXMLElement {
    public function addCData($cdata_text) {
        $node = dom_import_simplexml($this);
        $no = $node->ownerDocument;
        $node->appendChild($no->createCDATASection($cdata_text));
    }
}

// Verifique se a solicitação é POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Chame o método para buscar usuários e obtenha os resultados
    $usuarios = $retAPI->buscarUsuarios();

    // Converter os dados para XML
    $xmlData = new SimpleXMLExtended('<?xml version="1.0"?><usuarios></usuarios>');
    arrayToXml($usuarios, $xmlData);

    // Defina o cabeçalho para XML e retorne o XML
    header('Content-Type: application/xml; charset=utf-8');
    echo $xmlData->asXML();
} else {
    // Caso a solicitação não seja POST, retorne uma mensagem de erro
    header('Content-Type: application/json');
    echo json_encode(['error' => 'Este endpoint aceita apenas solicitações POST.']);
}
?>
