<?php
ini_set( "display_errors", 0);

/**
 make an http POST request and return the response content and headers
 @param string $url    url of the requested script
 @param array $data    hash array of request variables
 @return returns a hash array with response content and headers in the following form:
 array ('content'=>'<html></html>'
 , 'headers'=>array ('HTTP/1.1 200 OK', 'Connection: close', ...)
 )
 */
function http_post ($url, $data)
{
	$data_url = http_build_query ($data);
	$data_len = strlen ($data_url);

	return array ('content'=>file_get_contents ($url, false, stream_context_create (array ('http'=>array ('method'=>'POST'
	, 'header'=>"Connection: close\r\nContent-Length: $data_len\r\n"
	, 'content'=>$data_url
	))))
	, 'headers'=>$http_response_header
	);
}

/**
 Log
 @param string $url    url of the requested script
 @param array $data    hash array of request variables
 @return returns a hash array with response content and headers in the following form:
 */
function logFile($text)
{
	$ddf = fopen('./log/propsLoad.log','a');
	fwrite($ddf,"[".date("r")."] [PROPS] $text \n");
	fclose($ddf);
}

/**
 * Indents a flat JSON string to make it more human-readable.
 *
 * @param string $json The original JSON string to process.
 *
 * @return string Indented version of the original JSON string.
 */
function indent($json) {

    $result      = '';
    $pos         = 0;
    $strLen      = strlen($json);
    $indentStr   = '  ';
    $newLine     = "\n";
    $prevChar    = '';
    $outOfQuotes = true;

    for ($i=0; $i<=$strLen; $i++) {

        // Grab the next character in the string.
        $char = substr($json, $i, 1);

        // Are we inside a quoted string?
        if ($char == '"' && $prevChar != '\\') {
            $outOfQuotes = !$outOfQuotes;
        
        // If this character is the end of an element, 
        // output a new line and indent the next line.
        } else if(($char == '}' || $char == ']') && $outOfQuotes) {
            $result .= $newLine;
            $pos --;
            for ($j=0; $j<$pos; $j++) {
                $result .= $indentStr;
            }
        }
        
        // Add the character to the result string.
        $result .= $char;

        // If the last character was the beginning of an element, 
        // output a new line and indent the next line.
        if (($char == ',' || $char == '{' || $char == '[') && $outOfQuotes) {
            $result .= $newLine;
            if ($char == '{' || $char == '[') {
                $pos ++;
            }
            
            for ($j = 0; $j < $pos; $j++) {
                $result .= $indentStr;
            }
        }
        
        $prevChar = $char;
    }

    return $newLine.$result;
}
?>

<?php
// Archivo de urls
include 'propsHead.php';
// $url_name es para los nombres
// $url_attribs es para los atributos
logFile('[URL_CARGA]'.$url);
// Invocar URL names
// Solo si no viene un name en POST
$data = http_post($url, $_POST);
$json = $data['content'];
echo $json;
logFile('[URL_LLEGA]'.$url.':'.$json);
?>
