Example #1
0
 static function act($client_name, $api_name, $api_version, $request_json)
 {
     try {
         require_once MODELS_DIR . '/client.php';
         require_once MODELS_DIR . '/exceptioner.php';
         $client = new Client($client_name);
         $api_name_low_case = strtolower($api_name);
         $method_name_low_case = strtolower(Flight::request()->method);
         //cek adanya user
         Exceptioner::thrower(!$client->getClientExistenceBool(), "{$client_name} is not registered");
         //Cek adanya API
         Exceptioner::thrower(!file_exists(APIS_DIR . "/{$api_name_low_case}"), "{$api_name} API not available");
         //Cek adanya API buatnya
         Exceptioner::thrower(!$client->getClientAPIAvailibilityBool($api_name_low_case), "{$api_name} API is exist but not available for {$client_name} client");
         //Cek adanya versi api
         Exceptioner::thrower(!file_exists(APIS_DIR . "/{$api_name_low_case}/{$api_version}"), "{$api_version} of {$api_name} API not available");
         // Cek REST method
         Exceptioner::thrower(!file_exists(APIS_DIR . "/{$api_name_low_case}/{$api_version}/controllers/{$method_name_low_case}.php"), Flight::request()->method . " REST Method in {$api_version} of {$api_name} API not available");
         //Include
         require_once APIS_DIR . "/{$api_name_low_case}/{$api_version}/includes.php";
         //decrypt request, ubah request jadi array
         $request_array = DECRYPT_REQUEST ? $client->requestDecrypt($request_json) : json_decode(base64_decode(urldecode($request_json)), TRUE);
         $object_method = $request_array['method'];
         $request_params = $request_array['parameters'];
         //buat object
         $controller_name = $method_name_low_case . "Controller";
         $object = new $controller_name($request_params);
         //Check adanya object_method
         Exceptioner::thrower(!$object_method, "Method in request is NULL, or Decrypting Failed");
         //Check adanya method
         Exceptioner::thrower(!method_exists($object, "{$object_method}"), "{$object_method} object method in {$api_name} API {$api_version} not available");
         //Buat result, lihat toggle enkripsi
         ENCRYPT_RESPONSE ? $result['encrypted_data'] = $client->respondEncrypt($object->{$object_method}()) : ($result['decrypted_data'] = $object->{$object_method}());
         $result['success'] = true;
     } catch (Exception $e) {
         //catch any exceptions and report the problem
         $result = array();
         $result['errormsg'] = $e->getMessage();
         $result['success'] = false;
     }
     // Return Type Based o
     if (DEBUG_MODE) {
         echo "<pre>";
         echo "<br>DEBUG_MODE : " . DEBUG_MODE . "<br>";
         echo "<br>METHOD : " . Flight::request()->method . "<br>";
         echo "<br>ENCRYPT_RESPONSE : " . ENCRYPT_RESPONSE . "<br>";
         echo "<br>DECRYPT_REQUEST : " . DECRYPT_REQUEST . "<br>";
         echo '<br>$request_array : ';
         print_r($request_array);
         echo '<br>$result : ';
         print_r($result);
         echo "</pre>";
     } else {
         echo json_encode($result);
     }
 }