MULTI_DOWNLOADER_ACCESS_KEY MULTI_DOWNLOADER_SECRET_KEY
Some checks reported errors
continuous-integration/drone/push Build encountered an error

This commit is contained in:
Nicolas COMPAIN 2024-01-12 09:07:45 +00:00
parent bad3bf597a
commit 43fd2c26cb
4 changed files with 64 additions and 17 deletions

View File

@ -2,7 +2,8 @@
"name": "multi-downloader-client", "name": "multi-downloader-client",
"image": "rg.fr-par.scw.cloud/kubernetes/devcontainer:php-8.3", "image": "rg.fr-par.scw.cloud/kubernetes/devcontainer:php-8.3",
"containerEnv": { "containerEnv": {
"MULTI_DOWNLOADER_API_KEY": "YOUR_API_KEY", "MULTI_DOWNLOADER_ACCESS_KEY": "YOUR_API_KEY",
"MULTI_DOWNLOADER_SECRET_KEY": "YOUR_API_SECRET_KEY",
"MULTI_DOWNLOADER_URL": "https://multi-dl.kub.nwb.fr" "MULTI_DOWNLOADER_URL": "https://multi-dl.kub.nwb.fr"
}, },
"customizations": { "customizations": {

View File

@ -20,8 +20,9 @@ composer require nwb/multi-downloader-client
## Env ## Env
The following env variables are used by default The following env variables are used by default
```dotenv ```dotenv
MULTI_DOWNLOADER_API_KEY MULTI_DOWNLOADER_ACCESS_KEY
MULTI_DOWNLOADER_URL MULTI_DOWNLOADER_SECRET_KEY
MULTI_DOWNLOADER_URL (Utile en cas de test local. Si non précisée: https://multi-dl.kub.nwb.fr )
``` ```
They can be overriden in the constructor They can be overriden in the constructor
```php ```php

View File

@ -6,26 +6,35 @@ class MultiDownloaderClient
{ {
private string $url; private string $url;
private string $apiKey; private string $apiKey;
private string $apiSecret;
private array $files = []; private array $files = [];
/**
* Constructeur pour initialiser la classe avec des options spécifiques.
*
* Ce constructeur accepte un tableau d'options pour configurer divers paramètres.
* - `apiKey` (string): Clé d'API nécessaire pour l'authentification. Si elle n'est pas fournie dans le tableau, elle sera récupérée de la variable d'environnement 'MULTI_DOWNLOADER_ACCESS_KEY'.
* - `apiSecret` (string): Clé secrète d'API nécessaire pour des opérations sécurisées. Si elle n'est pas fournie dans le tableau, elle sera récupérée de la variable d'environnement 'MULTI_DOWNLOADER_SECRET_KEY'.
* - `url` (string): URL de base du service de téléchargement. Si elle n'est pas fournie, elle sera d'abord recherchée dans la variable d'environnement 'MULTI_DOWNLOADER_URL', sinon l'URL par défaut 'https://multi-dl.kub.nwb.fr' sera utilisée.
*
* @param array $options Options pour configurer le constructeur.
* @throws \InvalidArgumentException Si l'`apiKey` ou l'`apiSecret` n'est pas fourni.
*/
public function __construct(array $options = []) public function __construct(array $options = [])
{ {
$apiKey = $options['apiKey'] ?? getenv('MULTI_DOWNLOADER_API_KEY'); $apiKey = $options['apiKey'] ?? getenv('MULTI_DOWNLOADER_ACCESS_KEY');
if (!$apiKey) { if (!$apiKey) {
throw new \InvalidArgumentException('API key is required'); throw new \InvalidArgumentException('API key is required');
} }
$this->apiKey = $apiKey; $this->apiKey = $apiKey;
$url = $options['url'] ?? getenv('MULTI_DOWNLOADER_URL'); $apiSecret = $options['apiSecret'] ?? getenv('MULTI_DOWNLOADER_SECRET_KEY');
if (!$apiSecret) {
if (!$url) { throw new \InvalidArgumentException('API secret key is required');
throw new \InvalidArgumentException('API URL is required');
} }
$this->apiSecret = $apiSecret;
$this->url = $url; $this->url = $options['url'] ?? getenv('MULTI_DOWNLOADER_URL') ?? 'https://multi-dl.kub.nwb.fr';
} }
public function setFiles(array $files) public function setFiles(array $files)
@ -36,13 +45,22 @@ class MultiDownloaderClient
return $this; return $this;
} }
public function addFile(FileRequest $file) public function addFile(FileRequest $file)
{ {
$this->files[] = $file; $this->files[] = $file;
return $this; return $this;
} }
/**
* Ajoute plusieurs fichiers à la liste de téléchargement.
*
* Cette méthode prend un tableau de fichiers et les ajoute un par un
* à la liste de téléchargement en utilisant la méthode `addFile`.
*
* @param array $files Tableau de fichiers à ajouter.
* @return $this L'instance actuelle pour permettre le chaînage de méthodes.
*/
public function addFiles(array $files) public function addFiles(array $files)
{ {
foreach ($files as $file) { foreach ($files as $file) {
@ -59,11 +77,29 @@ class MultiDownloaderClient
}, $this->files); }, $this->files);
} }
/**
* Télécharge les fichiers et renvoie le résultat sous forme de chaîne de caractères.
*
* Cette méthode envoie la requête de téléchargement et renvoie le contenu
* téléchargé sous forme de chaîne de caractères. Idéal pour le traitement
* de données en mémoire.
*
* @return string Le contenu téléchargé sous forme de chaîne.
*/
public function downloadAsString(): string public function downloadAsString(): string
{ {
return $this->sendRequest(); return $this->sendRequest();
} }
/**
* Télécharge les fichiers et les enregistre dans un chemin spécifié.
*
* Cette méthode envoie la requête de téléchargement et sauvegarde le contenu
* téléchargé dans le fichier spécifié par le chemin `$path`.
*
* @param string $path Le chemin du fichier sauvegarder le contenu téléchargé.
* @return string Réponse de la requête de téléchargement.
*/
public function downloadTo(string $path): string public function downloadTo(string $path): string
{ {
$response = $this->sendRequest([ $response = $this->sendRequest([
@ -74,6 +110,15 @@ class MultiDownloaderClient
return $response; return $response;
} }
/**
* Génère et renvoie un formulaire HTML pour le téléchargement de fichiers.
*
* Cette méthode capture la sortie du fichier 'htmlForm.php' et la renvoie
* sous forme de chaîne de caractères. Utilisée pour générer dynamiquement
* un formulaire de téléchargement dans une page web.
*
* @return string Le formulaire HTML généré pour le téléchargement.
*/
public function htmlForm(): string public function htmlForm(): string
{ {
ob_start(); ob_start();

View File

@ -59,7 +59,7 @@ class MultiDownloaderClientTest extends TestCase
public function testApiKeyEnv() public function testApiKeyEnv()
{ {
putenv('MULTI_DOWNLOADER_API_KEY=1234567890'); putenv('MULTI_DOWNLOADER_ACCESS_KEY=1234567890');
$client = new MultiDownloaderClient(); $client = new MultiDownloaderClient();
$apiKey = self::getProperty($client, 'apiKey'); $apiKey = self::getProperty($client, 'apiKey');
@ -89,7 +89,7 @@ class MultiDownloaderClientTest extends TestCase
$this->expectException(\InvalidArgumentException::class); $this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage('API key is required'); $this->expectExceptionMessage('API key is required');
putenv('MULTI_DOWNLOADER_API_KEY'); putenv('MULTI_DOWNLOADER_ACCESS_KEY');
new MultiDownloaderClient(); new MultiDownloaderClient();
} }