Salut les Joomlers de l’extrême!

Aujourd’hui je vous présente mon retour d’expérience sur l’utilisation de l’API JSON d’Akeeba Backup Pro. Etant moi-même heureux possesseur d’une licence d’Akeeba Backup Pro, quoi de plus normal que d’aider la communauté de développeurs Joomla! et PHP à utiliser pleinement ce puissant outil incontournable qu’est Akeeba Backup Pro. Dans ce court article je ne présente qu’un cas d’utilisation. Mais je vous laisse imaginer le potentiel incroyable qu’offre cette API. Essayez par vous même. Explorez, partagez vos trouvailles! J’imagine bien pouvoir faire communiquer en tandem l’API d’Akeeba et l’API d’OVH par exemple pour optimiser les tâches qui pourraient, autrement, êtres répétitives, fastidieuses donc sources d’erreurs éventuelles.

/**
* Encodes the method parameters in a way that our remote API understands
    *
* @param string $method Which method of the remote API to use
* @param array $params A key=>value array with the method's parameters
* @param string $component [optional] Receiving component. Skip to use com_akeeba.
*
* @return array
* @see https://github.com/nikosdion/Akeeba-Example/blob/master/application/components/com_akeebaexample/helpers/api.php at line 148
*/
private function prepareQuery($method, $params, $component = 'com_akeeba')
{
$secret = 'frontend backup secret key akeeba backup pro’;
$body = array(
'method' => $method,
'data' => (object) $params
);

// added strval to work with strict_type in php7.1
$salt = md5(strval(microtime(true))); 
$challenge = $salt . ':' . md5($salt . $secret);
$body['challenge'] = $challenge;
$bodyData = json_encode($body);
$query = array(
'option' => $component,
'view' => 'json',
'json' => json_encode(array(
'encapsulation' => 1,
'body' => $bodyData
))
);
$query['format'] = 'component';

return $query;
}
A partir d’ici c’est le code personnalisé que j’ai écrit. Il s’agit de méthodes à mettre dans la même classe php que la méthode ci-dessus. Ce sont juste des exemples. Ce sont des appels à l’API JSON d’Akeeba Backup disponible pour la version pro. La documentation est ici
    
public function callAkeebaApiGetVersion()
{
$request = new Http();
$query = $this->prepareQuery('getVersion', []);
$url = 'https://www.example.com/';
$response = $request->get($url . '?' . http_build_query($query));

var_dump($response->body);
jexit();
}

public function callAkeebaApiGetIncludedDBs() { $request = new Http(); $profile_id = 1; $query = $this->prepareQuery('getIncludedDBs', ['profile' => $profile_id]); $url = 'https://www.example.com/'; $response = $request->get($url . '?' . http_build_query($query)); var_dump($response->body); jexit(); }


public function callAkeebaApiSetIncludedDB() { $request = new Http(); $url = 'https://www.example.com/'; $profile_id = 1; $start = 1; $limit = 250; //example to generate 250 configs by code for ($counter = $start; $counter <= $limit; $counter++) { $connection_object = ['host' => 'localhost', 'port' => 3306, 'driver' => 'pdomysql', 'user' => 'some_user' . $counter, 'password' => ‘generate_safe_password’. $counter, 'database' => 'some_database_name_' . $counter, 'prefix' => 'some_prefix_' ]; $query = $this->prepareQuery('setIncludedDB', [ 'profile' => $profile_id, 'name' => 'some_database_name' . $counter, 'connection' => (object) $connection_object, 'test' => true ]); $response = $request->get($url . '?' . http_build_query($query)); } var_dump($response->body); jexit(); }
Vous aimez? Partagez
LinkedIn