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); } }