mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-23 20:00:33 -04:00
Check PhantomJS response is valid PDF
This commit is contained in:
parent
43626c92a2
commit
b2b464fb9e
@ -34,6 +34,7 @@ class SystemLog extends Model
|
|||||||
const CATEGORY_GATEWAY_RESPONSE = 1;
|
const CATEGORY_GATEWAY_RESPONSE = 1;
|
||||||
const CATEGORY_MAIL = 2;
|
const CATEGORY_MAIL = 2;
|
||||||
const CATEGORY_WEBHOOK = 3;
|
const CATEGORY_WEBHOOK = 3;
|
||||||
|
const CATEGORY_PDF = 3;
|
||||||
|
|
||||||
/* Event IDs*/
|
/* Event IDs*/
|
||||||
const EVENT_PAYMENT_RECONCILIATION_FAILURE = 10;
|
const EVENT_PAYMENT_RECONCILIATION_FAILURE = 10;
|
||||||
@ -47,6 +48,7 @@ class SystemLog extends Model
|
|||||||
const EVENT_MAIL_RETRY_QUEUE = 31; //we use this to queue emails that are spooled and not sent due to the email queue quota being exceeded.
|
const EVENT_MAIL_RETRY_QUEUE = 31; //we use this to queue emails that are spooled and not sent due to the email queue quota being exceeded.
|
||||||
|
|
||||||
const EVENT_WEBHOOK_RESPONSE = 40;
|
const EVENT_WEBHOOK_RESPONSE = 40;
|
||||||
|
const EVENT_PDF_RESPONSE = 50;
|
||||||
|
|
||||||
/*Type IDs*/
|
/*Type IDs*/
|
||||||
const TYPE_PAYPAL = 300;
|
const TYPE_PAYPAL = 300;
|
||||||
@ -60,6 +62,8 @@ class SystemLog extends Model
|
|||||||
const TYPE_UPSTREAM_FAILURE = 401;
|
const TYPE_UPSTREAM_FAILURE = 401;
|
||||||
|
|
||||||
const TYPE_WEBHOOK_RESPONSE = 500;
|
const TYPE_WEBHOOK_RESPONSE = 500;
|
||||||
|
const TYPE_PDF_FAILURE = 600;
|
||||||
|
const TYPE_PDF_SUCCESS = 601;
|
||||||
|
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'client_id',
|
'client_id',
|
||||||
|
@ -11,10 +11,12 @@
|
|||||||
|
|
||||||
namespace App\Utils\PhantomJS;
|
namespace App\Utils\PhantomJS;
|
||||||
|
|
||||||
|
use App\Jobs\Util\SystemLogger;
|
||||||
use App\Models\CreditInvitation;
|
use App\Models\CreditInvitation;
|
||||||
use App\Models\Design;
|
use App\Models\Design;
|
||||||
use App\Models\InvoiceInvitation;
|
use App\Models\InvoiceInvitation;
|
||||||
use App\Models\QuoteInvitation;
|
use App\Models\QuoteInvitation;
|
||||||
|
use App\Models\SystemLog;
|
||||||
use App\Services\PdfMaker\Design as PdfDesignModel;
|
use App\Services\PdfMaker\Design as PdfDesignModel;
|
||||||
use App\Services\PdfMaker\Design as PdfMakerDesign;
|
use App\Services\PdfMaker\Design as PdfMakerDesign;
|
||||||
use App\Services\PdfMaker\PdfMaker as PdfMakerService;
|
use App\Services\PdfMaker\PdfMaker as PdfMakerService;
|
||||||
@ -77,7 +79,7 @@ class Phantom
|
|||||||
$phantom_url = "https://phantomjscloud.com/api/browser/v2/{$key}/?request=%7Burl:%22{$url}%22,renderType:%22pdf%22%7D";
|
$phantom_url = "https://phantomjscloud.com/api/browser/v2/{$key}/?request=%7Burl:%22{$url}%22,renderType:%22pdf%22%7D";
|
||||||
$pdf = CurlUtils::get($phantom_url);
|
$pdf = CurlUtils::get($phantom_url);
|
||||||
|
|
||||||
// Storage::makeDirectory($path, 0775);
|
$this->checkMime($pdf, $invitation, $entity);
|
||||||
|
|
||||||
$instance = Storage::disk(config('filesystems.default'))->put($file_path, $pdf);
|
$instance = Storage::disk(config('filesystems.default'))->put($file_path, $pdf);
|
||||||
|
|
||||||
@ -101,6 +103,36 @@ class Phantom
|
|||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Check if the returning PDF is valid. */
|
||||||
|
private function checkMime($pdf, $invitation, $entity)
|
||||||
|
{
|
||||||
|
|
||||||
|
$finfo = new \finfo(FILEINFO_MIME);
|
||||||
|
|
||||||
|
if($finfo->buffer($pdf) != 'application/pdf; charset=binary')
|
||||||
|
{
|
||||||
|
SystemLogger::dispatch(
|
||||||
|
$pdf,
|
||||||
|
SystemLog::CATEGORY_PDF,
|
||||||
|
SystemLog::EVENT_PDF_RESPONSE,
|
||||||
|
SystemLog::TYPE_PDF_FAILURE,
|
||||||
|
$invitation->contact->client
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
SystemLogger::dispatch(
|
||||||
|
"Entity PDF generated sucessfully => " . $invitation->{$entity}->number,
|
||||||
|
SystemLog::CATEGORY_PDF,
|
||||||
|
SystemLog::EVENT_PDF_RESPONSE,
|
||||||
|
SystemLog::TYPE_PDF_SUCCESS,
|
||||||
|
$invitation->contact->client
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public function displayInvitation(string $entity, string $invitation_key)
|
public function displayInvitation(string $entity, string $invitation_key)
|
||||||
{
|
{
|
||||||
$key = $entity.'_id';
|
$key = $entity.'_id';
|
||||||
|
@ -35,6 +35,7 @@ class PhantomJsTest extends TestCase
|
|||||||
|
|
||||||
public function testInValidPdfMime()
|
public function testInValidPdfMime()
|
||||||
{
|
{
|
||||||
|
|
||||||
$pdf = file_get_contents(base_path('/tests/Unit/Phantom/invalid.pdf'));
|
$pdf = file_get_contents(base_path('/tests/Unit/Phantom/invalid.pdf'));
|
||||||
|
|
||||||
$finfo = new \finfo(FILEINFO_MIME);
|
$finfo = new \finfo(FILEINFO_MIME);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user