Merge branch 'main' of ssh://git.nwb.fr:22050/modules-communs-php/multi-downloader-client

This commit is contained in:
Mathieu 2024-03-15 08:35:08 +00:00
commit 3e98d387ac
7 changed files with 58 additions and 10 deletions

View File

@ -18,7 +18,8 @@
"ms-azuretools.vscode-docker",
"GitHub.copilot-nightly",
"GitHub.copilot-chat",
"Gruntfuggly.todo-tree"
"Gruntfuggly.todo-tree",
"eamodio.gitlens"
]
}
},

3
.gitignore vendored
View File

@ -1,4 +1,5 @@
.idea
.phpunit.result.cache
vendor
composer.lock
composer.lock
.DS_Store

View File

@ -65,6 +65,10 @@ Pour utiliser cette fonctionnalité, vous appelez simplement la méthode htmlFor
```php
$form = $client->htmlForm();
```
Par défaut le nom du fichier ZIP généré sera "download.zip". Vous pouvez le personnaliser en passant un paramètre à la méthode htmlForm() :
```php
$form = $client->htmlForm('mon-zip.zip');
```
### Renommer les Fichiers dans le ZIP
Par défaut, les fichiers téléchargés sont nommés en fonction de leur URL. Vous pouvez cependant personnaliser le nom des fichiers dans le ZIP en utilisant la méthode `name` de l'objet `FileOptions`. Cette option peut être utile lorsque plusieurs fichiers ont le même nom ou lorsque vous souhaitez simplement renommer les fichiers pour une meilleure lisibilité.

View File

@ -2,7 +2,7 @@
"name": "nwb/multi-downloader-client",
"description": "Client for multi-downloader-service",
"type": "library",
"version": "0.0.8",
"version": "0.1.10",
"autoload": {
"psr-4": {
"Nwb\\MultiDownloaderClient\\": "src/"
@ -24,4 +24,4 @@
"scripts": {
"test": "phpunit"
}
}
}

View File

@ -126,10 +126,25 @@ class MultiDownloaderClient
* 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.
*
* @param string $fileName Nom du fichier zip à télécharger. Si non spécifié, le nom du fichier sera généré automatiquement.
* @return string Le formulaire HTML généré pour le téléchargement.
*/
public function htmlForm(): string
public function htmlForm($fileName = null): string
{
$zipName = ''; // Utilisé dans htmlForm.php
if (!empty($fileName)) {
$zipName = trim($fileName);
// Si le nom du fichier ne se termine pas par .zip, on l'ajoute
if (substr($zipName, -4) !== '.zip') {
$zipName .= '.zip';
}
// Si le nom du fichier ne commence pas par un slash, on l'ajoute
if (substr($zipName, 0, 1) !== '/') {
$zipName = '/' . $zipName;
}
}
$json_string = addslashes(json_encode($this->buildRequest()));
ob_start();
include __DIR__ . '/htmlForm.php';

View File

@ -19,23 +19,42 @@ use Nwb\MultiDownloaderClient\MultiDownloaderClient;
body {
display: inline;
}
#message {
text-align: center;
margin-top: 20px;
}
</style>
</head>
<body>
<div id="button_div" class="modal-dialog-buttons">
<form name="f" id="f" method="POST" action="<?= $this->url ?>/v2/form/zip" enctype="multipart/form-data">
<form name="f" id="f" method="POST" action="<?= $this->url ?>/v2/form/zip<?= $zipName ?>" enctype="multipart/form-data">
<input type="hidden" name="json" value='<?= json_encode($this->buildRequest()) ?>' />
<noscript>
<button id="submit_approve_access" type="submit" tabindex="1" style="overflow:visible;">Continue</button>
</noscript>
</form>
</div>
<div id="message"></div>
<script type="text/javascript">
var messages = {
'en': 'Your download will begin shortly. This page will close automatically.',
'fr': 'Votre téléchargement va commencer. Cette page se fermera automatiquement.'
};
var userLang = navigator.language || navigator.userLanguage;
userLang = userLang.split('-')[0];
document.getElementById('message').innerText = messages[userLang] || messages['en'];
document.forms['f'].submit();
window.setTimeout(function() {
window.close();
}, 2000); // 2 secondes
</script>
</body>
</html>
</html>

View File

@ -49,8 +49,16 @@ class MultiDownloaderClientTest extends TestCase
{
$client = new MultiDownloaderClient(['apiKey' => 'test', 'apiSecret' => 'test']);
$client->setFiles($this->testFiles());
echo $client->htmlForm();
// echo $client->htmlForm();
$this->assertTrue(true);
}
public function testFormDlZipNameSpecified()
{
$client = new MultiDownloaderClient(['apiKey' => 'test', 'apiSecret' => 'test']);
$client->setFiles($this->testFiles());
$output = $client->htmlForm("test123");
$this->assertStringContainsString('action="https://multi-dl.kub.nwb.fr/v2/form/zip/test123.zip"', $output);
}
}