1- {% if ' multipart/form-data' in method .consumes %}
21{% for parameter in method .parameters .all %}
32{% if parameter .type == ' file' %}
4- $size = filesize(${{ parameter .name | caseCamel }});
5- $mimeType = mime_content_type(${{ parameter .name | caseCamel }});
6- $postedName = basename(${{ parameter .name | caseCamel }});
7- //send single file if size is less than or equal to 5MB
8- if ($size < = Client::CHUNK_SIZE) {
9- $params['{{ parameter .name }}'] = new \CURLFile(${{ parameter .name | caseCamel }}, $mimeType, $postedName);
10- return $this->client->call(Client::METHOD_{{ method .method | caseUpper }}, $path, [
11- {% for param in method .parameters .header %}
12- '{{ param .name }}' => ${{ param .name | caseCamel }},
13- {% endfor %}
14- {% for key , header in method .headers %}
15- '{{ key }}' => '{{ header }}',
16- {% endfor %}
17- ], $params);
3+ $size = 0;
4+ $mimeType = null;
5+ $postedName = null;
6+ if(empty(${{ parameter .name | caseCamel }}->getPath())) {
7+ $size = strlen(${{ parameter .name | caseCamel }}->getData());
8+ $mimeType = ${{ parameter .name | caseCamel }}->getMimeType();
9+ $postedName = ${{ parameter .name | caseCamel }}->getFilename();
10+ if ($size < = Client::CHUNK_SIZE) {
11+ $params['{{ parameter .name | caseCamel }}'] = new \CURLFile('data://' . $mimeType . ';base64,' . base64_encode(${{ parameter .name | caseCamel }}->getData()), $mimeType, $postedName);
12+ return $this->client->call(Client::METHOD_POST, $path, [
13+ {% for param in method .parameters .header %}
14+ '{{ param .name }}' => ${{ param .name | caseCamel }},
15+ {% endfor %}
16+ {% for key , header in method .headers %}
17+ '{{ key }}' => '{{ header }}',
18+ {% endfor %}
19+ ], $params);
20+ }
21+ } else {
22+ $size = filesize(${{ parameter .name | caseCamel }}->getPath());
23+ $mimeType = ${{ parameter .name | caseCamel }}->getMimeType() ?? mime_content_type(${{ parameter .name | caseCamel }}->getPath());
24+ $postedName = ${{ parameter .name | caseCamel }}->getFilename() ?? basename(${{ parameter .name | caseCamel }}->getPath());
25+ //send single file if size is less than or equal to 5MB
26+ if ($size < = Client::CHUNK_SIZE) {
27+ $params['{{ parameter .name }}'] = new \CURLFile(${{ parameter .name | caseCamel }}->getPath(), $mimeType, $postedName);
28+ return $this->client->call(Client::METHOD_{{ method .method | caseUpper }}, $path, [
29+ {% for param in method .parameters .header %}
30+ '{{ param .name }}' => ${{ param .name | caseCamel }},
31+ {% endfor %}
32+ {% for key , header in method .headers %}
33+ '{{ key }}' => '{{ header }}',
34+ {% endfor %}
35+ ], $params);
36+ }
1837 }
1938
2039 $id = '';
2140 $counter = 0;
2241
2342{% for parameter in method .parameters .all %}
2443{% if parameter .isUploadID %}
25- if(${{ parameter .name | caseCamel | escapeKeyword }} != 'unique()') {
26- try {
27- $response = $this->client->call(Client::METHOD_GET, new URL($path . '/' . {{ parameter .name }}), headers);
28- $counter = $response['chunksUploaded'] ?? 0;
29- } catch(\Exception $e) {
30- }
44+ if(${{ parameter .name | caseCamel | escapeKeyword }} != 'unique()') {
45+ try {
46+ $response = $this->client->call(Client::METHOD_GET, $path . '/' . ${{ parameter .name }});
47+ $counter = $response['chunksUploaded'] ?? 0;
48+ } catch(\Exception $e) {
3149 }
50+ }
3251{% endif %}
3352{% endfor %}
3453
3554 $headers = ['content-type' => 'multipart/form-data'];
36- $handle = @fopen(${{ parameter .name | caseCamel }}, "rb");
55+ $handle = null;
56+
57+ if(!empty(${{parameter .name }}->getPath())) {
58+ $handle = @fopen(${{parameter .name }}->getPath(), "rb");
59+ }
60+
3761 $start = $counter * Client::CHUNK_SIZE;
3862 while ($start < $size) {
39- fseek($handle, $start);
40- $params['{{ parameter .name }}'] = new \CURLFile('data://' . $mimeType . ';base64,' . base64_encode(@fread($handle, Client::CHUNK_SIZE)), $mimeType, $postedName);
63+ $chunk = '';
64+ if(!empty($handle)) {
65+ fseek($handle, $start);
66+ $chunk = @fread($handle, Client::CHUNK_SIZE);
67+ } else {
68+ $chunk = substr($file->getData(), $start, Client::CHUNK_SIZE);
69+ }
70+ $params['{{ parameter .name }}'] = new \CURLFile('data://' . $mimeType . ';base64,' . base64_encode($chunk), $mimeType, $postedName);
4171 $headers['content-range'] = 'bytes ' . ($counter * Client::CHUNK_SIZE) . '-' . min(((($counter * Client::CHUNK_SIZE) + Client::CHUNK_SIZE) - 1), $size) . '/' . $size;
4272 if(!empty($id)) {
4373 $headers['x-{{spec .title | caseLower }}-id'] = $id;
5888 ]);
5989 }
6090 }
61- @fclose($handle);
91+ if(!empty($handle)) {
92+ @fclose($handle);
93+ }
6294 return $response;
6395{% endif %}
64- {% endfor %}
65- {% endif %}
96+ {% endfor %}
0 commit comments