From ef595acf6b5d4ef598b1faf3ebd3ab96be98e6d9 Mon Sep 17 00:00:00 2001 From: Cosmologist Date: Fri, 11 Jan 2019 22:28:06 +0300 Subject: [PATCH 1/2] Update Job.php --- src/Model/Job.php | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/src/Model/Job.php b/src/Model/Job.php index b13c23f..5cfb508 100644 --- a/src/Model/Job.php +++ b/src/Model/Job.php @@ -2,6 +2,9 @@ namespace Smalot\Cups\Model; +use finfo; +use function GuzzleHttp\Psr7\mimetype_from_filename; + /** * Class Job * @@ -262,22 +265,46 @@ public function getContent() * * @return Job */ - public function addFile($filename, $name = '', $mimeType = 'application/octet-stream') + public function addFile($filename, $name = '', $mimeType = null) { if (empty($name)) { $name = basename($filename); } + if ($mimeType === null) { + $mimeType = mimetype_from_filename($filename); + } + + return $this->addBinary(fopen($filename, 'r'), $name, $mimeType); + } + + /** + * @param string $binary + * @param string $name + * @param string $mimeType + * + * @return Job + */ + public function addBinary(resource $stream, $name, $mimeType = null) + { + if ($mimeType === null && class_exists(finfo::class)) { + $finfo = new finfo(FILEINFO_MIME_TYPE); + $mimeType = $finfo->buffer($binary); + } + + $mimeType = is_string($mimeType) ? $mimeType : 'application/octet-stream'; + $this->content[] = [ - 'type' => self::CONTENT_FILE, - 'name' => $name, - 'mimeType' => $mimeType, - 'filename' => $filename, + 'type' => self::CONTENT_FILE, + 'name' => $name, + 'mimeType' => $mimeType, + 'binary' => stream_get_contents($stream), ]; return $this; } + /** * @param string $text * @param string $name From 22299ad52041dab1a88a425c7114c4f528d1e266 Mon Sep 17 00:00:00 2001 From: Cosmologist Date: Fri, 11 Jan 2019 22:29:49 +0300 Subject: [PATCH 2/2] Update JobManager.php --- src/Manager/JobManager.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Manager/JobManager.php b/src/Manager/JobManager.php index 8eb08a8..9aef935 100644 --- a/src/Manager/JobManager.php +++ b/src/Manager/JobManager.php @@ -618,9 +618,7 @@ protected function prepareSendPartRequest(JobInterface $job, $part, $isLast = fa .chr(0x03); // end-of-attributes | end-of-attributes-tag if ($part['type'] == Job::CONTENT_FILE) { - $data = file_get_contents($part['filename']); - // $content .= chr(0x16); // datahead - $content .= $data; + $content .= $part['binary']; } else { $content .= chr(0x16); // datahead $content .= $part['text'];