From 43fd2c26cb6ded37fb82b9e8f0ad4108c54289f8 Mon Sep 17 00:00:00 2001 From: Nicolas COMPAIN Date: Fri, 12 Jan 2024 09:07:45 +0000 Subject: [PATCH] MULTI_DOWNLOADER_ACCESS_KEY MULTI_DOWNLOADER_SECRET_KEY --- .devcontainer/devcontainer.json | 3 +- README.md | 5 ++- src/MultiDownloaderClient.php | 69 ++++++++++++++++++++++++----- tests/MultiDownloaderClientTest.php | 4 +- 4 files changed, 64 insertions(+), 17 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 9281f12..57c59b0 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -2,7 +2,8 @@ "name": "multi-downloader-client", "image": "rg.fr-par.scw.cloud/kubernetes/devcontainer:php-8.3", "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" }, "customizations": { diff --git a/README.md b/README.md index f4c6ed6..c2b2a6b 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,9 @@ composer require nwb/multi-downloader-client ## Env The following env variables are used by default ```dotenv -MULTI_DOWNLOADER_API_KEY -MULTI_DOWNLOADER_URL +MULTI_DOWNLOADER_ACCESS_KEY +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 ```php diff --git a/src/MultiDownloaderClient.php b/src/MultiDownloaderClient.php index e48f0e7..a21416a 100644 --- a/src/MultiDownloaderClient.php +++ b/src/MultiDownloaderClient.php @@ -6,43 +6,61 @@ class MultiDownloaderClient { private string $url; private string $apiKey; + private string $apiSecret; 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 = []) { - $apiKey = $options['apiKey'] ?? getenv('MULTI_DOWNLOADER_API_KEY'); - + $apiKey = $options['apiKey'] ?? getenv('MULTI_DOWNLOADER_ACCESS_KEY'); if (!$apiKey) { throw new \InvalidArgumentException('API key is required'); } - $this->apiKey = $apiKey; - - $url = $options['url'] ?? getenv('MULTI_DOWNLOADER_URL'); - - if (!$url) { - throw new \InvalidArgumentException('API URL is required'); + + $apiSecret = $options['apiSecret'] ?? getenv('MULTI_DOWNLOADER_SECRET_KEY'); + if (!$apiSecret) { + throw new \InvalidArgumentException('API secret key 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) { $this->files = []; $this->addFiles($files); - + return $this; } + public function addFile(FileRequest $file) { $this->files[] = $file; - 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) { foreach ($files as $file) { @@ -59,11 +77,29 @@ class MultiDownloaderClient }, $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 { 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 où sauvegarder le contenu téléchargé. + * @return string Réponse de la requête de téléchargement. + */ public function downloadTo(string $path): string { $response = $this->sendRequest([ @@ -74,6 +110,15 @@ class MultiDownloaderClient 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 { ob_start(); diff --git a/tests/MultiDownloaderClientTest.php b/tests/MultiDownloaderClientTest.php index 6ff2605..09183a5 100644 --- a/tests/MultiDownloaderClientTest.php +++ b/tests/MultiDownloaderClientTest.php @@ -59,7 +59,7 @@ class MultiDownloaderClientTest extends TestCase public function testApiKeyEnv() { - putenv('MULTI_DOWNLOADER_API_KEY=1234567890'); + putenv('MULTI_DOWNLOADER_ACCESS_KEY=1234567890'); $client = new MultiDownloaderClient(); $apiKey = self::getProperty($client, 'apiKey'); @@ -89,7 +89,7 @@ class MultiDownloaderClientTest extends TestCase $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('API key is required'); - putenv('MULTI_DOWNLOADER_API_KEY'); + putenv('MULTI_DOWNLOADER_ACCESS_KEY'); new MultiDownloaderClient(); }