Fixed minor bugs
[speedfreak] / Server / application / controllers / api.php
index 9692244..0b95e41 100644 (file)
@@ -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');
        }
 
     }