From 237476dc281b066af6dab1e5cc3d34c31000fbd8 Mon Sep 17 00:00:00 2001 From: Marc Ducobu Date: Thu, 19 Aug 2021 18:22:53 +0200 Subject: [PATCH] Save generated doc in openstack --- .../DocGeneratorTemplateController.php | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/src/Bundle/ChillDocGeneratorBundle/Controller/DocGeneratorTemplateController.php b/src/Bundle/ChillDocGeneratorBundle/Controller/DocGeneratorTemplateController.php index d67d9eeba..ab7b602d5 100644 --- a/src/Bundle/ChillDocGeneratorBundle/Controller/DocGeneratorTemplateController.php +++ b/src/Bundle/ChillDocGeneratorBundle/Controller/DocGeneratorTemplateController.php @@ -11,10 +11,10 @@ use Symfony\Component\Routing\Annotation\Route; use Chill\DocGeneratorBundle\Entity\DocGeneratorTemplate; use ChampsLibres\AsyncUploaderBundle\TempUrl\TempUrlOpenstackGenerator; use PhpOffice\PhpWord\TemplateProcessor; +use GuzzleHttp\Client; // TODO à mettre dans services use Chill\DocGeneratorBundle\Context\HouseholdMemberSelectionContext; -use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkEvaluation; /** * Class DocGeneratorTemplateController @@ -57,12 +57,12 @@ class DocGeneratorTemplateController extends AbstractController TempUrlOpenstackGenerator $tempUrlGenerator, DocGeneratorTemplate $template, string $entityClassName, int $entityId): Response { - $p = $tempUrlGenerator->generate( + $getUrlGen = $tempUrlGenerator->generate( 'GET', $template->getFile()); $tmpfname = tempnam(sys_get_temp_dir(), 'DOC_TEMPLATE'); - file_put_contents($tmpfname, file_get_contents($p->{"url"})); + file_put_contents($tmpfname, file_get_contents($getUrlGen->{"url"})); $entity = $this->getDoctrine()->getRepository($entityClassName)->find($entityId); @@ -83,16 +83,36 @@ class DocGeneratorTemplateController extends AbstractController unlink($tmpfname); $fileContent = fopen($tmpfname2, 'r'); // the generated file content - $response = new Response(fread($fileContent, filesize($tmpfname2))); - $disposition = HeaderUtils::makeDisposition( - HeaderUtils::DISPOSITION_ATTACHMENT, - 'foo.docx' - ); + $genDocName = 'doc_'.sprintf( '%010d', rand()).'.docx'; + + $getUrlGen = $tempUrlGenerator->generate( + 'PUT', + $genDocName); - $response->headers->set('Content-Disposition', $disposition); unlink($tmpfname2); - return $response; + $client = new Client(); + + $putResponse = $client->request('PUT', $getUrlGen->{'url'}, [ + 'body' => $fileContent + ]); + + if ($putResponse->getStatusCode() == 201) { + return new JsonResponse( + array( + "msg" => "Document créé", + "id" => $genDocName, + "response" => array( + "reasonPhrase" => $putResponse->getReasonPhrase(), + "statusCode" => $putResponse->getStatusCode()))); + } + + return new JsonResponse( + array( + "msg" => "PBM", + "response" => array( + "reasonPhrase" => $putResponse->getReasonPhrase(), + "statusCode" => $putResponse->getStatusCode()))); } }