Open Monograph Press  3.3.0
Base64ContentEncoder.php
1 <?php
2 
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11 
13 
15 
20 {
21  public function encodeByteStream($stream, int $maxLineLength = 0): iterable
22  {
23  if (!\is_resource($stream)) {
24  throw new \TypeError(sprintf('Method "%s" takes a stream as a first argument.', __METHOD__));
25  }
26 
27  $filter = stream_filter_append($stream, 'convert.base64-encode', STREAM_FILTER_READ, [
28  'line-length' => 0 >= $maxLineLength || 76 < $maxLineLength ? 76 : $maxLineLength,
29  'line-break-chars' => "\r\n",
30  ]);
31  if (!\is_resource($filter)) {
32  throw new RuntimeException('Unable to set the base64 content encoder to the filter.');
33  }
34 
35  if (stream_get_meta_data($stream)['seekable'] ?? false) {
36  rewind($stream);
37  }
38  while (!feof($stream)) {
39  yield fread($stream, 8192);
40  }
41  stream_filter_remove($filter);
42  }
43 
44  public function getName(): string
45  {
46  return 'base64';
47  }
48 }
Symfony\Component\Mime\Exception\RuntimeException
Definition: vendor/symfony/mime/Exception/RuntimeException.php:17
Symfony\Component\Mime\Encoder
Definition: AddressEncoderInterface.php:12
Symfony\Component\Mime\Encoder\Base64ContentEncoder\encodeByteStream
encodeByteStream($stream, int $maxLineLength=0)
Definition: Base64ContentEncoder.php:21
Symfony\Component\Mime\Encoder\Base64ContentEncoder
Definition: Base64ContentEncoder.php:19
Symfony\Component\Mime\Encoder\Base64Encoder
Definition: Base64Encoder.php:17
Symfony\Component\Mime\Encoder\Base64ContentEncoder\getName
getName()
Definition: Base64ContentEncoder.php:44
Symfony\Component\Mime\Encoder\ContentEncoderInterface
Definition: ContentEncoderInterface.php:17