friendship ended with social-app. php is my new best friend
1<?php
2
3namespace React\Http\Io;
4
5use Psr\Http\Message\StreamInterface;
6use Psr\Http\Message\UploadedFileInterface;
7use InvalidArgumentException;
8use RuntimeException;
9
10/**
11 * [Internal] Implementation of the PSR-7 `UploadedFileInterface`
12 *
13 * This is used internally to represent each incoming file upload.
14 *
15 * Note that this is an internal class only and nothing you should usually care
16 * about. See the `UploadedFileInterface` for more details.
17 *
18 * @see UploadedFileInterface
19 * @internal
20 */
21final class UploadedFile implements UploadedFileInterface
22{
23 /**
24 * @var StreamInterface
25 */
26 private $stream;
27
28 /**
29 * @var int
30 */
31 private $size;
32
33 /**
34 * @var int
35 */
36 private $error;
37
38 /**
39 * @var string
40 */
41 private $filename;
42
43 /**
44 * @var string
45 */
46 private $mediaType;
47
48 /**
49 * @param StreamInterface $stream
50 * @param int $size
51 * @param int $error
52 * @param string $filename
53 * @param string $mediaType
54 */
55 public function __construct(StreamInterface $stream, $size, $error, $filename, $mediaType)
56 {
57 $this->stream = $stream;
58 $this->size = $size;
59
60 if (!\is_int($error) || !\in_array($error, array(
61 \UPLOAD_ERR_OK,
62 \UPLOAD_ERR_INI_SIZE,
63 \UPLOAD_ERR_FORM_SIZE,
64 \UPLOAD_ERR_PARTIAL,
65 \UPLOAD_ERR_NO_FILE,
66 \UPLOAD_ERR_NO_TMP_DIR,
67 \UPLOAD_ERR_CANT_WRITE,
68 \UPLOAD_ERR_EXTENSION,
69 ))) {
70 throw new InvalidArgumentException(
71 'Invalid error code, must be an UPLOAD_ERR_* constant'
72 );
73 }
74 $this->error = $error;
75 $this->filename = $filename;
76 $this->mediaType = $mediaType;
77 }
78
79 /**
80 * {@inheritdoc}
81 */
82 public function getStream()
83 {
84 if ($this->error !== \UPLOAD_ERR_OK) {
85 throw new RuntimeException('Cannot retrieve stream due to upload error');
86 }
87
88 return $this->stream;
89 }
90
91 /**
92 * {@inheritdoc}
93 */
94 public function moveTo($targetPath)
95 {
96 throw new RuntimeException('Not implemented');
97 }
98
99 /**
100 * {@inheritdoc}
101 */
102 public function getSize()
103 {
104 return $this->size;
105 }
106
107 /**
108 * {@inheritdoc}
109 */
110 public function getError()
111 {
112 return $this->error;
113 }
114
115 /**
116 * {@inheritdoc}
117 */
118 public function getClientFilename()
119 {
120 return $this->filename;
121 }
122
123 /**
124 * {@inheritdoc}
125 */
126 public function getClientMediaType()
127 {
128 return $this->mediaType;
129 }
130}