url = $parameterBag->get('chill_doc_generator')['driver']['relatorio']['url']; } public function generateFromString(string $template, string $resourceType, array $data, ?string $templateName = null): string { $form = new FormDataPart( [ 'variables' => json_encode($data, JSON_THROW_ON_ERROR), 'template' => new DataPart($template, $templateName ?? uniqid('template_'), $resourceType), ] ); try { $response = $this->client->request('POST', $this->url, [ 'headers' => $form->getPreparedHeaders()->toArray(), 'body' => $form->bodyToIterable(), 'timeout' => '300', ]); return $response->getContent(); } catch (ClientExceptionInterface $e) { $content = $e->getResponse()->getContent(false); if (400 === $e->getResponse()->getStatusCode()) { $content = json_decode($content, true, 512, JSON_THROW_ON_ERROR); $this->logger->error('relatorio: template error', [ 'error' => $content['message'] ?? '_not defined', ]); throw new TemplateException([$content['message']]); } $this->logger->error('relatorio: error while generating document', [ 'msg' => $e->getMessage(), 'response' => $e->getResponse()->getStatusCode(), 'content' => $content, ]); throw $e; } catch (TransportExceptionInterface $e) { $this->logger->error('relatorio: transport exception', [ 'msg' => $e->getMessage(), 'e' => $e->getTraceAsString(), ]); throw $e; } catch (DecodingExceptionInterface $e) { $this->logger->error('relatorio: could not decode response', [ 'msg' => $e->getMessage(), 'e' => $e->getTraceAsString(), ]); throw $e; } catch (\Throwable $exception) { $this ->logger ->error( 'relatorio: Unable to get content from response.', [ 'msg' => $exception->getMessage(), 'e' => $exception->getTraceAsString(), ] ); throw $exception; } } }