Example #1
0
 public function dispatch($request)
 {
     $this->request = $request;
     $this->id = $request->id;
     $this->params = $request->params;
     $res = new REST_Response();
     switch ($this->request->action) {
         case 'view':
             if (isset($this->id)) {
                 $this->model->get($this->id);
                 $res->data = $this->model;
                 $res->message = "view";
                 $res->success = true;
                 return $res->to_json();
             } else {
                 $res->data = $this->model->fetchArray();
                 $res->success = true;
                 return $res->to_json();
             }
             break;
         case 'create':
             $this->model->sName = $this->params['sName'];
             $this->model->sValue = $this->params['sValue'];
             $this->model->update();
             $res->data = $this->model;
             $res->message = "create";
             $res->success = true;
             return $res->to_json();
             break;
         case 'update':
             $this->model->iID = $this->params['iID'];
             $this->model->sName = $this->params['sName'];
             $this->model->sValue = $this->params['sValue'];
             $this->model->update();
             $res->message = "update";
             $res->data = $this->model;
             $res->success = true;
             return $res->to_json();
             break;
         case 'destroy':
             $id = stripslashes($_REQUEST['data']);
             $res->message = $id;
             $res->success = true;
             $this->model->get($id);
             $res->success = false;
             if (isset($this->model)) {
                 $this->model->delete();
                 $res->success = true;
             }
             $res->data = null;
             return $res->to_json();
             break;
     }
 }
Example #2
0
 /**
  * Launch a synchrone request
  * returns the request identifier or false if fire is aborted
  * @param  array
  * @return integer or false
  */
 public function fire(REST_Request $request)
 {
     if ($this->loads === 0) {
         $this->time = microtime(true);
     }
     ++$this->loads;
     self::$handles++;
     // create a fresh request identifier
     $request->setCurlOption(CURLOPT_USERAGENT, 'REST_Client/' . self::$version);
     // launch the fire hooks
     foreach ($this->fire_hook as $hook) {
         $ret = call_user_func($hook, $request, self::$handles, $this);
         // this hook want to stop the fire ?
         if ($ret === false) {
             ++$this->loads_null;
             self::$handles--;
             return false;
         }
     }
     // configure curl client
     curl_setopt_array($this->handle, $request->toCurl());
     if (!is_resource($this->handle)) {
         ++$this->loads_null;
         return trigger_error(sprintf('%s::%s() cURL session was lost', __CLASS__, $method), E_USER_ERROR);
     }
     // send the request and create the response object
     ++$this->requests;
     $response = new REST_Response(curl_exec($this->handle), curl_errno($this->handle), curl_error($this->handle));
     if (!$response->isError()) {
         foreach (REST_Response::$properties as $name => $const) {
             $response->{$name} = curl_getinfo($this->handle, $const);
         }
     }
     $response->id = self::$handles;
     $this->responses[] = $response;
     // append the response to the stack
     return self::$handles;
     // return a unique identifier for the request
 }