<?php
/**
 * Comunic Rest API
 *
 * Serves the data for users
 *
 * @author Pierre HUBERT
 */

/**
 * Page initiator
 */
include(__DIR__."/init.php");

//Include RestControllers
foreach(glob(PROJECT_PATH."RestControllers/*.php") as $restControllerFile){
	require_once $restControllerFile;
}

//Include RestServer library
require PROJECT_PATH."3rdparty/RestServer/RestServer.php";

//Allow remote requests
header("Access-Control-Allow-Origin: *");

//By default return format is json
if(!isset($_GET["format"]))
	$_GET['format'] = "json";

//Check client tokens
if($cs->config->get("site_mode") == "debug"){ //DEBUG ONLY
	$_POST['serviceName'] = "testService";
	$_POST['serviceToken'] = "testPasswd";
}
if(!$cs->tokens->checkClientRequestTokens())
	Rest_fatal_error(401, "Please check your client tokens!");

//Check if login tokens where specified
if(isset($_POST['userToken1']) AND isset($_POST['userToken2'])){
	//Try to login user
	$userID = $cs->user->getUserIDfromToken(APIServiceID, array(
		$_POST['userToken1'],
		$_POST['userToken2']
	));

	if($userID < 1){
		Rest_fatal_error(401, "Please check your login tokens!");
	}

	//Else save userID
	define("userID", $userID);
}
else {
	//Defined userID is number 0
	define("userID", 0);
}

/**
 * Handle Rest requests
 */
$server = new \Jacwright\RestServer\RestServer($cs->config->get("site_mode"));

//Include controllers
foreach(get_included_files() as $filePath){
	if(preg_match("<RestControllers>", $filePath)){
		$className = strstr($filePath, "RestControllers/");
		$className = str_replace(array("RestControllers/", ".php"), "", $className);
		$server->addClass($className);
	}
}

//Hanlde
$server->handle();