From d543cfcc3f3ca0de76834d406b6abfb609a18078 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 26 Mar 2019 08:40:03 +0200 Subject: [PATCH] Merge proposal PDF fix --- app/Jobs/ConvertProposalToPdf.php | 33 +++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/app/Jobs/ConvertProposalToPdf.php b/app/Jobs/ConvertProposalToPdf.php index dc8e27ba7d4c..54d25ac75f83 100644 --- a/app/Jobs/ConvertProposalToPdf.php +++ b/app/Jobs/ConvertProposalToPdf.php @@ -2,8 +2,8 @@ namespace App\Jobs; -use App\Jobs\Job; use App\Libraries\CurlUtils; +use Utils; class ConvertProposalToPdf extends Job { @@ -14,11 +14,36 @@ class ConvertProposalToPdf extends Job public function handle() { - $proposal = $this->proposal; - $url = $proposal->getHeadlessLink(); + if (! env('PHANTOMJS_CLOUD_KEY') && ! env('PHANTOMJS_BIN_PATH')) { + return false; + } + if (Utils::isTravis()) { + return false; + } + + $proposal = $this->proposal; + $link = $proposal->getLink(true, true); + $phantomjsSecret = env('PHANTOMJS_SECRET'); + $phantomjsLink = sprintf('%s?phantomjs=true&phantomjs_secret=%s', $link, $phantomjsSecret); $filename = sprintf('%s/storage/app/%s.pdf', base_path(), strtolower(str_random(RANDOM_KEY_LENGTH))); - $pdf = CurlUtils::renderPDF($url, $filename); + + try { + $pdf = CurlUtils::renderPDF($phantomjsLink, $filename); + + if (! $pdf && ($key = env('PHANTOMJS_CLOUD_KEY'))) { + $url = "http://api.phantomjscloud.com/api/browser/v2/{$key}/?request=%7Burl:%22{$link}?phantomjs=true%26phantomjs_secret={$phantomjsSecret}%22,renderType:%22pdf%22%7D"; + $pdf = CurlUtils::get($url); + } + } catch (\Exception $exception) { + Utils::logError("PhantomJS - Failed to load {$phantomjsLink}: {$exception->getMessage()}"); + return false; + } + + if (! $pdf || strlen($pdf) < 200) { + Utils::logError("PhantomJS - Invalid response {$phantomjsLink}: {$pdf}"); + return false; + } return $pdf; }