X-Git-Url: http://git.maemo.org/git/?p=speedfreak;a=blobdiff_plain;f=Server%2Fapplication%2Fcontrollers%2Fapi.php;h=0b95e411b0650d08a5c8abf2d36f3c7a5fb8602e;hp=9692244ed744bbb4097fc806809b75fd1cd31009;hb=604af45b2b4093b01dc7669a51d9fd67a4c43ad7;hpb=9cddbaf57a215186fee6ed1345adf2a1d066d921 diff --git a/Server/application/controllers/api.php b/Server/application/controllers/api.php index 9692244..0b95e41 100644 --- a/Server/application/controllers/api.php +++ b/Server/application/controllers/api.php @@ -48,26 +48,101 @@ class Api_Controller extends Controller{ } return $xml; } - + /* * Check that supplied credentials are valid using basic authentication * */ public function login(){ + if ($this->is_authorized()){ + print "OK"; + 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'])) - print "OK"; + $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.0 401 Unauthorized'); - print "Invalid credentials"; - die; + header("HTTP/1.1 400 Bad Request"); + echo "Invalid request"; + die; } } else { - header('HTTP/1.0 401 Unauthorized'); - print "No credentials supplied"; - die; + header("HTTP/1.0 404 Not Found"); + die('Category not found or not authorized'); } }