Skip to content

Commit e7ef9bb

Browse files
committed
fix
1 parent 7c9e883 commit e7ef9bb

File tree

1 file changed

+58
-27
lines changed

1 file changed

+58
-27
lines changed
Lines changed: 58 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,73 @@
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;
@@ -58,8 +88,9 @@
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

Comments
 (0)