Subversion Repositories Applications.referentiel

Rev

Rev 23 | Rev 26 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 23 Rev 24
Line 53... Line 53...
53
		return $this->limite_nbre;
53
		return $this->limite_nbre;
54
	}
54
	}
Line 55... Line 55...
55
	
55
	
56
	//+----------------------------------------------------------------------------------------------------------------+
56
	//+----------------------------------------------------------------------------------------------------------------+
-
 
57
	// MÉTHODES
-
 
58
	
-
 
59
	protected function envoyerRequeteConsultation($url) {
-
 
60
		$retour = $this->envoyerRequete($url, 'GET');
-
 
61
		return $retour;
-
 
62
	}
57
	// MÉTHODES
63
	
58
	protected function envoyerRequeteAjout($url, Array $donnees) {
64
	protected function envoyerRequeteAjout($url, Array $donnees) {
59
		$retour = $this->envoyerRequete($url, $donnees, 'PUT');
65
		$retour = $this->envoyerRequete($url, 'PUT', $donnees);
60
		return $retour;
66
		return $retour;
Line 61... Line 67...
61
	}
67
	}
62
	
68
	
63
	protected function envoyerRequeteModif($url, $donnees) {
69
	protected function envoyerRequeteModif($url, $donnees) {
64
		$retour = $this->envoyerRequete($url, $donnees, 'POST');
70
		$retour = $this->envoyerRequete($url, 'POST', $donnees);
Line 65... Line 71...
65
		return $retour;
71
		return $retour;
66
	}
72
	}
67
	
73
	
68
	protected function envoyerRequeteSuppression($url) {
74
	protected function envoyerRequeteSuppression($url) {
Line 69... Line 75...
69
		$retour = $this->envoyerRequete($url, $donnees, 'DELETE');
75
		$retour = $this->envoyerRequete($url, 'DELETE', $donnees);
70
		return $retour;
76
		return $retour;
71
	}
77
	}
72
	
78
	
73
	private function envoyerRequete($url, Array $donnees, $mode) {
79
	private function envoyerRequete($url, $mode, Array $donnees = array()) {
74
		$retour = false;
80
		$contenu = false;
75
		if ($mode != 'PUT' && $mode != 'POST' && $mode != 'DELETE') {
81
		if ($mode != 'GET' && $mode != 'PUT' && $mode != 'POST' && $mode != 'DELETE') {
76
			$e = "Le mode de requête '$mode' n'est pas accepté!";
82
			$e = "Le mode de requête '$mode' n'est pas accepté!";
77
			trigger_error($e, E_USER_WARNING);
83
			trigger_error($e, E_USER_WARNING);
78
		} else {
84
		} else {
79
			$contexte = stream_context_create(
85
			$contexte = stream_context_create(array(
80
				array('http' => array(
86
				'http' => array(
-
 
87
      				'method' => $mode,
-
 
88
					'header' => "Content-type: application/x-www-form-urlencoded\r\n",
-
 
89
      				'content' => http_build_query($donnees))));
-
 
90
			$flux = @fopen($url, 'r', false, $contexte);
-
 
91
			if (!$flux) {
-
 
92
				$this->traiterEntete($http_response_header, $url);
-
 
93
				$e = "L'ouverture de l'url '$url' a échoué!";
-
 
94
				trigger_error($e, E_USER_WARNING);
-
 
95
			} else {
-
 
96
				// Informations sur les en-têtes et métadonnées du flux
-
 
97
				$entetes = stream_get_meta_data($flux);
-
 
98
				$this->traiterEntete($entetes, $url);
-
 
99
				
-
 
100
				// Contenu actuel de $url
-
 
101
				$contenu = stream_get_contents($flux);
-
 
102
				
-
 
103
				fclose($flux);
-
 
104
			}
-
 
105
		}
-
 
106
		return $contenu;
-
 
107
	}
-
 
108
	
-
 
109
	private function traiterEntete($entetes, $uri) {
-
 
110
		$infos = $this->analyserEntete($entetes, $uri);
-
 
111
		$this->traiterEnteteDebug($infos);
-
 
112
		$this->traiterEnteteMessage($infos);
-
 
113
	}
-
 
114
	
-
 
115
	private function analyserEntete($entetes, $uri) {
-
 
116
		$infos = array('date' => null, 'uri' => $uri, 'debugs' => null, 'messages' => null);
-
 
117
		
-
 
118
		if (isset($entetes['wrapper_data'])) {
-
 
119
			$entetes = $entetes['wrapper_data'];
-
 
120
		}
-
 
121
		foreach ($entetes as $entete) {
-
 
122
			if (preg_match('/^X-DebugJrest-Data: (.+)$/', $entete, $match)) {
-
 
123
				$infos['debugs'] = json_decode($match[1]);
-
 
124
			}
-
 
125
			if (preg_match('/^X-MessageJrest-Data: (.+)$/', $entete, $match)) {
-
 
126
				$infos['messages'] = json_decode($match[1]);
-
 
127
			}
-
 
128
			if (preg_match('/^Date: .+ ([012][0-9]:[012345][0-9]:[012345][0-9]) .*$/', $entete, $match)) {
-
 
129
				$infos['date'] = $match[1];
-
 
130
			}
-
 
131
		}
-
 
132
		return $infos;
-
 
133
	}
-
 
134
	
-
 
135
	private function traiterEnteteDebug($entetes) {
-
 
136
		if (isset($entetes['debugs'])) {
-
 
137
			$date = $entetes['date'];
-
 
138
			$uri = $entetes['uri'];
-
 
139
			$debugs = $entetes['debugs'];
-
 
140
			foreach ($debugs as $debug) {
-
 
141
				Debug::printr("DEBUG : $date - $uri :\n$debug");
-
 
142
			}
-
 
143
		}
-
 
144
	}
-
 
145
	
-
 
146
	private function traiterEnteteMessage($entetes) {
-
 
147
		if (isset($entetes['messages'])) {
-
 
148
			$date = $entetes['date'];
-
 
149
			$uri = $entetes['uri'];
81
	      			'method' => $mode,
150
			$messages = $entetes['messages'];
82
					'header' => "Content-type: application/x-www-form-urlencoded\r\n",
-
 
83
	      			'content' => http_build_query($donnees))));
151
			foreach ($messages as $message) {
84
			$retour = file_get_contents($url, false, $contexte);
152
				Debug::printr("MESSAGE : $date - $uri :\n$message");
85
		}
153
			}