run(); // Print the headers and the body: $request->writeHeader(); $request->writeBody(); // This method parses the incoming request: function parseRequest() { $request = array('method' => 'GET', 'path' => null, 'extra' => Array()); $request['method'] = $_SERVER['REQUEST_METHOD']; //Parsing query string: parse_str($_SERVER['QUERY_STRING'], $request['queryString']); //Processing the path: if(($pos = strpos($_SERVER['REQUEST_URI'], '?')) !== false) $path = substr($_SERVER['REQUEST_URI'], 0, $pos); else $path = $_SERVER['REQUEST_URI']; if(strpos($_SERVER['SCRIPT_NAME'], 'index.php') !== false) { $dirname = dirname($_SERVER['SCRIPT_NAME']); $path = substr($path, strlen($dirname) + 1); } //Remove empty values from split $path array $split = array_filter(explode('/', $path)); $request['path'] = isset($split[0]) ? $split[0] : null; $request['extra'] = array_slice($split, 1); $requestHandler = null; // Looking for the best function for this request: switch ($request['path']) { case 'upload': require_once './requests/requestPostUpload.php'; $requestHandler = new arkiwiRequestPostUpload($request); break; case 'listmetadata': require_once './requests/requestGetListMetadata.php'; $requestHandler = new arkiwiRequestGetListMetadata($request); break; case 'modifymetadata': require_once './requests/requestPostModifyMetadata.php'; $requestHandler = new arkiwiRequestPostModifyMetadata($request); break; case 'createdirectory': require_once './requests/requestPostCreateDirectory.php'; $requestHandler = new arkiwiRequestPostCreateDirectory($request); break; /* case 'removemetadata': require_once './requests/requestPostRemoveMetadata.php'; $requestHandler = new arkiwiRequestPostRemoveMetadata($request); break;*/ default: require_once './requests/requestError.php'; $requestHandler = new arkiwiRequestError($request); break; } return $requestHandler; }