X-Git-Url: http://git.maemo.org/git/?p=speedfreak;a=blobdiff_plain;f=Server%2Fapplication%2Fcontrollers%2Fapi.php;h=0b95e411b0650d08a5c8abf2d36f3c7a5fb8602e;hp=6b05e456381a37dd95ec2e088d46b608b01d8ffe;hb=604af45b2b4093b01dc7669a51d9fd67a4c43ad7;hpb=2c157b77bd08e659c5a7358891819804abfcfde2 diff --git a/Server/application/controllers/api.php b/Server/application/controllers/api.php index 6b05e45..0b95e41 100644 --- a/Server/application/controllers/api.php +++ b/Server/application/controllers/api.php @@ -54,21 +54,96 @@ class Api_Controller extends Controller{ * */ public function login(){ - if (isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])){ - $user = new User_Model(); - if ($user->login($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])) + if ($this->is_authorized()){ print "OK"; - else { - header('HTTP/1.0 401 Unauthorized'); - print "Invalid credentials"; die; - } } - else { - header('HTTP/1.0 401 Unauthorized'); - print "No credentials supplied"; - die; + else + $this->not_authorized(); + } + + /* + * Validate supplied credentials + */ + public function is_authorized(){ + if (isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])){ + $user = new User_Model(); + if ($user->login($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])) + return true; + else + return false; + } + else + return false; + + } + + /* + * Display "You're not authorized error to client + * + * @todo Need to create function for generally displaying errors + */ + public function not_authorized(){ + header('HTTP/1.0 401 Unauthorized'); + print "Invalid credentials or not registered"; + die; + } + + /* + * Get categories list and output it as XML + * + */ + public function categories(){ + if ($this->is_authorized()){ + $view = new View('api/categories'); + $cat = new Category_Model(); + $view->categories=$cat->get_all(); + $view->render(true); } - + else + $this->not_authorized(); + } + + /* + * Get results + * + */ + public function results($category, $limit){ + $results = New Result_Model(); + $cat = New Category_Model(); + if ($cat->category_exists($category) AND $this->is_authorized() AND isset($limit)){ + $view = new View('api/results'); + $view->results = $results->get_results($category, $limit); + $view->render(true); + } + else + $this->not_authorized(); + } + + /* + * Submit results to selected category + * + * @param string $category Category to which results are submitted + */ + public function update($category){ + $cat = New Category_Model(); + if ($cat->category_exists($category) AND $this->is_authorized()){ + $xml = $this->get_xml(); + $result = New Result_Model(); + if ($result->insert($category,$_SERVER['PHP_AUTH_USER'], $xml['value'])){ + print "OK"; + die; + } + else { + header("HTTP/1.1 400 Bad Request"); + echo "Invalid request"; + die; + } + } + else { + header("HTTP/1.0 404 Not Found"); + die('Category not found or not authorized'); + } + } } \ No newline at end of file