From 8abed67e1cb29cd4dd52a1d769ccc90282973be0 Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Tue, 8 Mar 2022 15:46:31 +0100 Subject: [PATCH] refactor: Return a string instead of a resource. --- .../GeneratorDriver/DriverInterface.php | 7 +-- .../GeneratorDriver/RelatorioDriver.php | 46 +++++++++++++------ 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/src/Bundle/ChillDocGeneratorBundle/GeneratorDriver/DriverInterface.php b/src/Bundle/ChillDocGeneratorBundle/GeneratorDriver/DriverInterface.php index 2572484e1..d787523c9 100644 --- a/src/Bundle/ChillDocGeneratorBundle/GeneratorDriver/DriverInterface.php +++ b/src/Bundle/ChillDocGeneratorBundle/GeneratorDriver/DriverInterface.php @@ -13,10 +13,5 @@ namespace Chill\DocGeneratorBundle\GeneratorDriver; interface DriverInterface { - /** - * @param resource $template - * - * @return resource - */ - public function generateFromResource($template, string $resourceType, array $data, ?string $templateName = null); + public function generateFromString(string $template, string $resourceType, array $data, ?string $templateName = null): string; } diff --git a/src/Bundle/ChillDocGeneratorBundle/GeneratorDriver/RelatorioDriver.php b/src/Bundle/ChillDocGeneratorBundle/GeneratorDriver/RelatorioDriver.php index 7a3e4ac69..73a4ba9e0 100644 --- a/src/Bundle/ChillDocGeneratorBundle/GeneratorDriver/RelatorioDriver.php +++ b/src/Bundle/ChillDocGeneratorBundle/GeneratorDriver/RelatorioDriver.php @@ -20,40 +20,40 @@ use Symfony\Contracts\HttpClient\Exception\DecodingExceptionInterface; use Symfony\Contracts\HttpClient\Exception\HttpExceptionInterface; use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; +use Throwable; -class RelatorioDriver implements DriverInterface +final class RelatorioDriver implements DriverInterface { - private LoggerInterface $logger; + private HttpClientInterface $client; - private HttpClientInterface $relatorioClient; + private LoggerInterface $logger; private string $url; public function __construct( - HttpClientInterface $relatorioClient, + HttpClientInterface $client, ParameterBagInterface $parameterBag, LoggerInterface $logger ) { - $this->relatorioClient = $relatorioClient; + $this->client = $client; $this->logger = $logger; $this->url = $parameterBag->get('chill_doc_generator')['driver']['relatorio']['url']; } - public function generateFromResource($template, string $resourceType, array $data, ?string $templateName = null) + public function generateFromString(string $template, string $resourceType, array $data, ?string $templateName = null): string { - $formFields = [ - 'variables' => json_encode($data), - 'template' => new DataPart($template, $templateName ?? uniqid('template_'), $resourceType), - ]; - $form = new FormDataPart($formFields); + $form = new FormDataPart( + [ + 'variables' => json_encode($data), + 'template' => new DataPart($template, $templateName ?? uniqid('template_'), $resourceType), + ] + ); try { - $response = $this->relatorioClient->request('POST', $this->url, [ + $response = $this->client->request('POST', $this->url, [ 'headers' => $form->getPreparedHeaders()->toArray(), 'body' => $form->bodyToIterable(), ]); - - return $response->toStream(); } catch (HttpExceptionInterface $e) { $content = $e->getResponse()->getContent(false); @@ -88,5 +88,23 @@ class RelatorioDriver implements DriverInterface throw $e; } + + try { + $content = $response->getContent(); + } catch (Throwable $exception) { + $this + ->logger + ->error( + 'relatorio: Unable to get content from response.', + [ + 'msg' => $exception->getMessage(), + 'e' => $exception->getTraceAsString(), + ] + ); + + throw $exception; + } + + return $content; } }