<?php

// conf
$path         "/account";
$host         "api.udger.com";

// view source this file and exit
if ($_GET['source'] == "y") {     show_source(__FILE__);     exit; }

// header page
scriptheader();

// form
echo "Paste access key in this fields and click 'Check up', maybe select debug output view.<br />";
echo 
"<form method=\"get\">";
echo 
"<b>Accesskey</b>: <br />";
echo 
"<textarea cols=\"100\" rows=\"2\" name=\"key\">".$_GET['key']."</textarea><br />";
if (
$_GET['debug'] == 1) { $dactive " selected"$nactive "";} else { $nactive " selected"$dactive "";}
echo 
"Output: <select name=\"debug\">";
echo 
"<option value=\"0\"".$nactive.">Normal</option>";
echo 
"<option value=\"1\"".$dactive.">Debug</option>";
echo 
"</select>&nbsp;<input type=\"submit\" value=\"Check up\">";
echo 
"</form>";

if (
$_GET['key']) {
    
$url "http://".$host.$path;
    
$data = array('accesskey' => $_GET['key']);

    if (
$_GET['debug']) { echo "<pre>\n---REQUEST---\nPOST\n".http_build_query($data)."\nto\n".$url."\n---END---\n\n</pre>"; }
    
    
$options = array(
        
'http' => array(
            
'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
            
'method'  => 'POST',
            
'content' => http_build_query($data),
        ),
    );
    
$context  stream_context_create($options);
    
$result file_get_contents($urlfalse$context);    
    
    
    if (
$_GET['debug']) { echo "<pre>\n---RESPONSE---\n".htmlspecialchars(json_format($result))."\n---END---\n\n</pre>"; }
 
    
$result json_decode($resulttrue);
    echo 
"<b>System flag:</b> ".$result['flag']."<br />";
    if (
$result['flag'] == 1) {
            echo 
"<b>ERROR text:</b> ".$result['errortext'];
    }
    else {
        
$boolarray = Array(false => 'false'true => 'true');
        echo 
"----- Local parser -----<br />";
        echo 
"<b>Subscription:</b> ".$boolarray[$result['LocalParser']['subscription']]."<br />";
        echo 
"<b>Subscription from:</b> ".$result['LocalParser']['subscription_from']."<br />";
        echo 
"<b>Subscription to:</b> ".$result['LocalParser']['subscription_to']."<br />";
        echo 
"----- Cloud parser -----<br />";
        echo 
"<b>Subscription:</b> ".$boolarray[$result['CloudParser']['subscription']]."<br />";
        echo 
"<b>Subscription from:</b> ".$result['CloudParser']['subscription_from']."<br />";
        echo 
"<b>Subscription to:</b> ".$result['CloudParser']['subscription_to']."<br />";
        echo 
"<b>Period:</b> ".$result['CloudParser']['period']."<br />";
        echo 
"<b>Current period start:</b> ".$result['CloudParser']['current_period_start']."<br />";
        echo 
"<b>Max queries per period:</b> ".$result['CloudParser']['max_queries_per_period']."<br />";
        echo 
"<b>Currently queries per period:</b> ".$result['CloudParser']['currently_queries_per_period']."<br />";
    }
}

// end page
foot();

// ---- function ----
function https_replace($url) {
  if(
$_SERVER[HTTPS]) {
    
$url str_replace("http:""https:"$url);
  }
  return 
$url;
}
function  
scriptheader() {
    echo 
"<html>\n";
    echo 
"<head>\n";
    echo 
"<title>API example \"account\" (PHP) :: udger.com</title>\n";
    echo 
"</head>\n";
    echo 
"<body>\n";
    echo 
"<b>udger.com API 'account' example (PHP)</b>\n<hr />";
}
function  
foot() {
    echo 
"<hr />";
    echo 
"<a href=\"".https_replace("http:")."//udger.com/products/cloud_parser\"  target=\"_blank\">Cloud parser</a>:";
    echo 
"udger.com API example (PHP)</b> - <a href=\"?source=y\" target=\"_blank\">source code</a>";
    echo 
"</body></html>\n";
}


// original code: http://www.daveperrett.com/articles/2008/03/11/format-json-with-php/
// adapted to allow native functionality in php version >= 5.4.0

/**
* Format a flat JSON string to make it more human-readable
*
* @param string $json The original JSON string to process
*        When the input is not a string it is assumed the input is RAW
*        and should be converted to JSON first of all.
* @return string Indented version of the original JSON string
*/
function json_format($json) {
  if (!
is_string($json)) {
    if (
phpversion() && phpversion() >= 5.4) {
      return 
json_encode($jsonJSON_PRETTY_PRINT);
    }
    
$json json_encode($json);
  }
  
$result      '';
  
$pos         0;               // indentation level
  
$strLen      strlen($json);
  
$indentStr   "\t";
  
$newLine     "\n";
  
$prevChar    '';
  
$outOfQuotes true;

  for (
$i 0$i $strLen$i++) {
    
// Speedup: copy blocks of input which don't matter re string detection and formatting.
    
$copyLen strcspn($json$outOfQuotes " \t\r\n\",:[{}]" "\\\""$i);
    if (
$copyLen >= 1) {
      
$copyStr substr($json$i$copyLen);
      
// Also reset the tracker for escapes: we won't be hitting any right now
      // and the next round is the first time an 'escape' character can be seen again at the input.
      
$prevChar '';
      
$result .= $copyStr;
      
$i += $copyLen 1;      // correct for the for(;;) loop
      
continue;
    }
    
    
// Grab the next character in the string
    
$char substr($json$i1);
    
    
// Are we inside a quoted string encountering an escape sequence?
    
if (!$outOfQuotes && $prevChar === '\\') {
      
// Add the escaped character to the result string and ignore it for the string enter/exit detection:
      
$result .= $char;
      
$prevChar '';
      continue;
    }
    
// Are we entering/exiting 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 ($outOfQuotes && ($char === '}' || $char === ']')) {
      
$result .= $newLine;
      
$pos--;
      for (
$j 0$j $pos$j++) {
        
$result .= $indentStr;
      }
    }
    
// eat all non-essential whitespace in the input as we do our own here and it would only mess up our process
    
else if ($outOfQuotes && false !== strpos(" \t\r\n"$char)) {
      continue;
    }

    
// Add the character to the result string
    
$result .= $char;
    
// always add a space after a field colon:
    
if ($outOfQuotes && $char === ':') {
      
$result .= ' ';
    }

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

  return 
$result;
}

?>