Subversion Repositories Applications.projet

Rev

Rev 431 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 431 Rev 437
Line 27... Line 27...
27
	 * Constructor. Parses the configuration file "JRest.ini", grabs any request data sent, records the HTTP
27
	 * Constructor. Parses the configuration file "JRest.ini", grabs any request data sent, records the HTTP
28
	 * request method used and parses the request URL to find out the requested resource
28
	 * request method used and parses the request URL to find out the requested resource
29
	 * @param str iniFile Configuration file to use
29
	 * @param str iniFile Configuration file to use
30
	 */
30
	 */
31
	public function JRest($iniFile = 'jrest.ini.php') {
31
	public function JRest($iniFile = 'jrest.ini.php') {
32
 
-
 
33
		$this->config = parse_ini_file($iniFile, TRUE);
32
		$this->config = parse_ini_file($iniFile, TRUE);
34
		if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD']) && isset($_SERVER['QUERY_STRING'])) {
33
		if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD']) && isset($_SERVER['QUERY_STRING'])) {
35
			if (isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH'] > 0) {
34
			if (isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH'] > 0) {
36
				$this->requestData = '';
35
				$this->requestData = '';
37
				$httpContent = fopen('php://input', 'r');
36
				$httpContent = fopen('php://input', 'r');
Line 43... Line 42...
43
			if (strlen($_SERVER['QUERY_STRING']) == 0) {
42
			if (strlen($_SERVER['QUERY_STRING']) == 0) {
44
				$len = strlen($_SERVER['REQUEST_URI']);
43
				$len = strlen($_SERVER['REQUEST_URI']);
45
			} else {
44
			} else {
46
				$len = -(strlen($_SERVER['QUERY_STRING']) + 1);
45
				$len = -(strlen($_SERVER['QUERY_STRING']) + 1);
47
			}
46
			}
-
 
47
			
-
 
48
			$urlString = '';
-
 
49
			if  (substr_count($_SERVER['REQUEST_URI'], $this->config['settings']['baseURL']) > 0) {
48
			$urlString = substr($_SERVER['REQUEST_URI'], strlen($this->config['settings']['baseURL']), $len);
50
				$urlString = substr($_SERVER['REQUEST_URI'], strlen($this->config['settings']['baseURL']), $len);
-
 
51
			} else if (substr_count($_SERVER['REQUEST_URI'], $this->config['settings']['baseAlternativeURL']) > 0) {
-
 
52
				$urlString = substr($_SERVER['REQUEST_URI'], strlen($this->config['settings']['baseAlternativeURL']), $len);
-
 
53
			}
Line 49... Line 54...
49
 
54
 
Line 50... Line 55...
50
			$urlParts = explode('/', $urlString);
55
			$urlParts = explode('/', $urlString);
51
 
56
 
Line 67... Line 72...
67
 
72
 
68
	/**
73
	/**
69
	 * Execute the request.
74
	 * Execute the request.
70
	 */
75
	 */
71
	function exec() {
-
 
72
 
76
	function exec() {
73
		switch ($this->method) {
77
		switch ($this->method) {
74
			case 'GET':
78
			case 'GET':
75
				$this->get();
79
				$this->get();
76
				break;
80
				break;
Line 126... Line 130...
126
				$pairs[$v['name']] = $v;
130
				$pairs[$v['name']] = $v;
127
			}
131
			}
Line 128... Line 132...
128
 
132
 
129
			// Ne pas effacer cette ligne ! Elle est indispensable pour les services du Carnet en ligne
133
			// Ne pas effacer cette ligne ! Elle est indispensable pour les services du Carnet en ligne
130
			// qui n'utilisent que le tableau pairs dans les posts
134
			// qui n'utilisent que le tableau pairs dans les posts
131
			$pairs = array_merge($pairs, $_POST);
135
			$pairs = array_merge($_POST, $pairs);
Line 132... Line 136...
132
		}
136
		}
133
 
137
 
134
		// gestion du contenu du post
138
		// gestion du contenu du post
135
		if(isset($_POST))
139
		if(isset($_POST))
136
		{
140
		{
137
			// Safari ne sait pas envoyer des DELETE avec gwt...
141
			// Safari ne sait pas envoyer des DELETE avec gwt...
138
			// Nous utilisons le parametre "action" passé dans le POST qui doit contenir DELETE pour lancer la supression
142
			// Nous utilisons le parametre "action" passé dans le POST qui doit contenir DELETE pour lancer la supression
139
			if ($pairs['action'] == 'DELETE') {
143
			if (isset($pairs['action']) && $pairs['action'] == 'DELETE') {
140
				$this->delete();
144
				$this->delete();
Line 141... Line 145...
141
				return;
145
				return;
Line 148... Line 152...
148
					if (file_exists($resource_file)) {
152
					if (file_exists($resource_file)) {
149
						include_once $resource_file;
153
						include_once $resource_file;
150
						if (class_exists($resource_class)) {
154
						if (class_exists($resource_class)) {
151
							$service = new $resource_class($this->config);
155
							$service = new $resource_class($this->config);
152
							if (method_exists($service,'updateElement')) { // Update element
156
							if (method_exists($service,'updateElement')) { // Update element
-
 
157
								$ret_value = false;
-
 
158
								try {
153
								// TODO : a voir le retour ...
159
									// TODO : a voir le retour ...
154
								if ($service->updateElement($this->uid, $pairs)) {
160
									$ret_value = $service->updateElement($this->uid, $pairs);
-
 
161
									if($ret_value) $this->created();
-
 
162
									else $this->badRequest();
-
 
163
								} catch (Exception $e) {
155
									$this->created();
164
									$this->badRequest($e);
156
								}
165
								}
157
							}
166
							}
158
						}
167
						}
159
					}
168
					}
160
				} else { // get all elements of a ressource
169
				} else { // get all elements of a ressource
Line 200... Line 209...
200
			if (file_exists($resource_file)) {
209
			if (file_exists($resource_file)) {
201
				include_once $resource_file;
210
				include_once $resource_file;
202
				if (class_exists($resource_class)) {
211
				if (class_exists($resource_class)) {
203
					$service = new $resource_class($this->config);
212
					$service = new $resource_class($this->config);
204
					if (method_exists($service,'createElement')) { // Create a new element
213
					if (method_exists($service,'createElement')) { // Create a new element
-
 
214
						$ret_value = false;
-
 
215
						try {
205
						if ($service->createElement($pairs)) {
216
							$ret_value = $service->createElement($pairs);
-
 
217
							if($ret_value) $this->created();
-
 
218
							else $this->badRequest();
-
 
219
						} catch (Exception $e) {
206
							$this->created();
220
							$this->badRequest($e);
207
						}
221
						}
208
					}
222
					}
209
				}
223
				}
210
			}
224
			}
211
		} else {
225
		} else {
Line 248... Line 262...
248
	}
262
	}
Line 249... Line 263...
249
 
263
 
250
	/**
264
	/**
251
	 * Send a HTTP 400 response header.
265
	 * Send a HTTP 400 response header.
252
	 */
266
	 */
253
	private function badRequest() {
267
	private function badRequest(Exception $e = NULL) {
-
 
268
		header('HTTP/1.0 400 Bad Request');
254
		header('HTTP/1.0 400 Bad Request');
269
		if($e) echo $e->getMessage();
Line 255... Line 270...
255
	}
270
	}
256
 
271
 
257
	/**
272
	/**