Subversion Repositories Applications.framework

Compare Revisions

Ignore whitespace Rev 495 → Rev 496

/trunk/framework/RestClient.php
18,7 → 18,19
protected $parametres = null;
private $url = null;
private $reponse_entetes = null;
 
private $tracer_ip_source = null;
private $requete_headers = array();
public function __construct() {
//verifie si paramètre tracer_ip_source est sur TRUE dans config.ini
if (Config::existe('tracer_ip_source')) {
//lire la config
$valeur = Config::get('tracer_ip_source');
//si oui, active X-Forwarded-For
$this->setTracerIPSource($valeur);
}
//pas de else, si pas dans la config $tracer_ip_source sera NULL/FALSE
}
//+------------------------------------------------------------------------------------------------------+
// ACCESSEURS
 
42,7 → 54,11
public function nettoyerParametres() {
$this->parametres = null;
}
 
public function setTracerIPSource($valeur) {
$this->tracer_ip_source = $valeur;
}
//+------------------------------------------------------------------------------------------------------+
// MÉTHODES
 
74,28 → 90,35
// vraisemblablement induire des comportements différents. (test-suite needed)
$contenu = $this->envoyerCurlRequete($url, $mode, $donnees);
} else {
$contenu = $this->envoyerStreamRequete($url, $mode, $donnees);
$contenu = $this->envoyerStreamRequete($url, $mode, $donnees);
}
return $contenu;
}
 
private function envoyerStreamRequete($url, $mode, Array $donnees = array()) {
$this->url = $url;
$this->url = $url;
$contenu = false;
if (! in_array($mode, $this->http_methodes)) {
$e = "Le mode de requête '$mode' n'est pas accepté!";
trigger_error($e, E_USER_WARNING);
} else {
if ($mode == 'GET') {
if ($mode == 'GET') {
$this->traiterUrlParametres();
}
$content = http_build_query($donnees, null, self::HTTP_URL_REQUETE_SEPARATEUR);
$contexte = stream_context_create(array(
'http' => array(
'method' => $mode,
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'content' => $content)));
$flux = @fopen($this->url, 'r', false, $contexte);
$content = http_build_query($donnees, null, self::HTTP_URL_REQUETE_SEPARATEUR);
$this->requete_headers['http'] = array();
$this->requete_headers['http']['method'] = $mode;
$this->requete_headers['http']['header'] = "Content-type: application/x-www-form-urlencoded\r\n";
if ($this->tracer_ip_source) {
// ajoute X-Forwarded-For au header
$this->requete_headers['http']['header'] .= "X-Forwarded-For: {$_SERVER['REMOTE_ADDR']}, {$_SERVER['SERVER_ADDR']}\r\n";
}
$this->requete_headers['http']['header'] .= "User-Agent: {$_SERVER['HTTP_USER_AGENT']} ApiTela/";
$this->requete_headers['http']['header'] .= Framework::getInfoAppli('nom');
$this->requete_headers['http']['header'] .= "\r\n";
$this->requete_headers['http']['content'] = $content;
$contexte = stream_context_create($this->requete_headers);
$flux = @fopen($this->url, 'r', false, $contexte);
if (!$flux) {
$entetesFmt = print_r($this->analyserEntete(), true);
$e = "Echec requête '$mode' : {$this->url}\n".