From b78154c5829667e065d1ef4e60dd3474e6a42ea9 Mon Sep 17 00:00:00 2001 From: Alexandre_BRAVO Date: Wed, 4 Dec 2024 14:05:11 +0100 Subject: [PATCH] debut logique pour post sur la route --- appinfo/routes.php | 3 +- lib/Controller/PageController.php | 70 ++++++++++++++++++++++++++--- src/App.vue | 6 ++- src/components/WebContentViewer.vue | 15 ++++++- templates/index.php | 4 +- 5 files changed, 86 insertions(+), 12 deletions(-) diff --git a/appinfo/routes.php b/appinfo/routes.php index fc9e23a..15f0a6f 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -2,6 +2,7 @@ return [ 'routes' => [ ['name' => 'page#main', 'url' => '/', 'verb' => 'GET'], - ['name' => 'page#post', 'url' => '/post', 'verb' => 'POST'], + ['name' => 'page#zipDrop', 'url' => '/zipDrop', 'verb' => 'GET'], + ['name' => 'page#getZipFile', 'url' => '/getZipFile', 'verb' => 'POST'] ] ]; diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php index 7fe7930..c194af0 100644 --- a/lib/Controller/PageController.php +++ b/lib/Controller/PageController.php @@ -33,15 +33,73 @@ class PageController extends Controller { #[NoCSRFRequired] #[NoAdminRequired] - #[FrontpageRoute(verb: 'POST', url: '/zipDeposit')] - public function post($archiveUrl, $token) { - $request = $this->request; - $parameters = array('archiveUrl' => $archiveUrl, 'token' => $token); - - return new TemplateResponse( + #[OpenAPI(OpenAPI::SCOPE_IGNORE)] + #[FrontpageRoute(verb: 'POST', url: '/zipDrop')] + public function zipDrop() { + $subUrl = $this->request->getParam('subUrl'); + if (!$subUrl) { + return new JSONResponse(['error' => 'subUrl is required'], 400); // Retourner une réponse d'erreur 400 si le paramètre est manquant + } + + $parameters = array('archiveUrl' => $subUrl); + + // Créer une réponse basée sur un template + $response = new TemplateResponse( Application::APP_ID, 'index', $parameters ); + + return $response; + } + + #[NoCSRFRequired] + #[NoAdminRequired] + #[OpenAPI(OpenAPI::SCOPE_IGNORE)] + #[FrontpageRoute(verb: 'POST', url: '/getZipFile')] + public function getZipFile() { + // Récupérer les données envoyées dans la requête POST + $requestData = $this->request->getParams(); // Accéder aux paramètres envoyés + $zipUrl = $requestData['subUrl'] ?? null; // Récupérer 'subUrl' ou null si absent + + // Valider l'URL + if (!$zipUrl || filter_var($zipUrl, FILTER_VALIDATE_URL) === false) { + return new \OCP\AppFramework\Http\DataResponse(['error' => 'Invalid URL'], 400); + } + + // Utiliser cURL pour récupérer le fichier ZIP à l'URL fournie + /*$ch = curl_init($zipUrl); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + $fileContent = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // Récupérer le code HTTP + curl_close($ch);*/ + + // Vérifier si le fichier est récupéré avec succès + /*if ($fileContent !== false && $httpCode === 200) { + $response = new \OCP\AppFramework\Http\DownloadResponse($fileContent); + $response->setContentDisposition('attachment', 'yourfile.zip'); + return $response; + } + + // Gérer les erreurs si le fichier ne peut pas être récupéré + return new \OCP\AppFramework\Http\DataResponse(['error' => 'File not found'], 404); + + new JSONResponse(['error' => 'subUrl is required'], 400); + */ + try { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $zipUrl); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + + $response = curl_exec($ch); + + if (curl_errno($ch)) { + return new JSONResponse(['feur' => curl_error($ch)], 200); + } + + return new JSONResponse(['feur' => $response], 200); + } catch (Exception $e) { + return new JSONResponse(['feur' => $e->getMessage()], 500); + } } } diff --git a/src/App.vue b/src/App.vue index 986a8be..4871511 100644 --- a/src/App.vue +++ b/src/App.vue @@ -5,7 +5,7 @@
- +