Skip to content

Commit 0860d99

Browse files
Merge pull request #390 from appwrite/fix-chunk-upload
Fix: chunk upload
2 parents c76c884 + 9a07c30 commit 0860d99

File tree

10 files changed

+61
-34
lines changed

10 files changed

+61
-34
lines changed

composer.lock

Lines changed: 17 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/SDK/Language/Node.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,27 @@ public function getName()
1212
return 'NodeJS';
1313
}
1414

15+
/**
16+
* @param $type
17+
* @return string
18+
*/
19+
public function getTypeName($type)
20+
{
21+
switch ($type) {
22+
case self::TYPE_INTEGER:
23+
case self::TYPE_NUMBER:
24+
return 'number';
25+
break;
26+
case self::TYPE_ARRAY:
27+
return 'string[]';
28+
case self::TYPE_FILE:
29+
return 'string';
30+
break;
31+
}
32+
33+
return $type;
34+
}
35+
1536
/**
1637
* @return array
1738
*/

templates/cli/lib/client.js.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class Client {
101101
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;
102102
}
103103

104-
headers = Object.assign(this.headers, headers);
104+
headers = Object.assign({}, this.headers, headers);
105105

106106
let contentType = headers["content-type"].toLowerCase();
107107

templates/deno/src/client.ts.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export class Client {
6666
}
6767

6868
async call(method: string, path: string = '', headers: Payload = {}, params: Payload = {}) {
69-
headers = { ...this.headers, ...headers };
69+
headers = Object.assign({}, this.headers, headers);
7070

7171
let body;
7272
const url = new URL(this.endpoint + path);

templates/deno/src/services/service.ts.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,13 @@ export class {{ service.name | caseUcfirst }} extends Service {
7070

7171
{% for parameter in method.parameters.query %}
7272
if (typeof {{ parameter.name | caseCamel | escapeKeyword }} !== 'undefined') {
73-
payload['{{ parameter.name }}'] = {{ parameter.name | caseCamel | escapeKeyword }};
73+
payload['{{ parameter.name }}'] = {{ parameter.name | caseCamel | escapeKeyword }}{% if method.consumes[0] == "multipart/form-data" and ( parameter.type != "string" and parameter.type != "array" ) %}.toString(){% endif %};
7474
}
7575

7676
{% endfor %}
7777
{% for parameter in method.parameters.body %}
7878
if (typeof {{ parameter.name | caseCamel | escapeKeyword }} !== 'undefined') {
79-
payload['{{ parameter.name }}'] = {{ parameter.name | caseCamel | escapeKeyword }};
79+
payload['{{ parameter.name }}'] = {{ parameter.name | caseCamel | escapeKeyword }}{% if method.consumes[0] == "multipart/form-data" and ( parameter.type != "string" and parameter.type != "array" ) %}.toString(){% endif %};
8080
}
8181
{% endfor %}
8282
{% if 'multipart/form-data' in method.consumes %}

templates/node/lib/client.js.twig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ class Client {
7979
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;
8080
}
8181

82-
headers = Object.assign(this.headers, headers);
82+
83+
headers = Object.assign({}, this.headers, headers);
8384

8485
let contentType = headers['content-type'].toLowerCase();
8586

templates/node/lib/services/service.js.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ class {{ service.name | caseUcfirst }} extends Service {
3434
{% for parameter in method.parameters.query %}
3535

3636
if (typeof {{ parameter.name | caseCamel | escapeKeyword }} !== 'undefined') {
37-
payload['{{ parameter.name }}'] = {{ parameter.name | caseCamel | escapeKeyword }};
37+
payload['{{ parameter.name }}'] = {{ parameter.name | caseCamel | escapeKeyword }}{% if method.consumes[0] == "multipart/form-data" and ( parameter.type != "string" and parameter.type != "array" ) %}.toString(){% endif %};
3838
}
3939
{% endfor %}
4040
{% for parameter in method.parameters.body %}
4141

4242
if (typeof {{ parameter.name | caseCamel | escapeKeyword }} !== 'undefined') {
43-
payload['{{ parameter.name }}'] = {{ parameter.name | caseCamel | escapeKeyword}};
43+
payload['{{ parameter.name }}'] = {{ parameter.name | caseCamel | escapeKeyword}}{% if method.consumes[0] == "multipart/form-data" and ( parameter.type != "string" and parameter.type != "array" ) %}.toString(){% endif %};
4444
}
4545
{% endfor %}
4646

templates/php/src/Services/Service.php.twig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,10 @@ class {{ service.name | caseUcfirst }} extends Service
8989
$id = $response['$id'];
9090
}
9191
if($onProgress !== null) {
92+
$end = min(((($counter * Client::CHUNK_SIZE) + Client::CHUNK_SIZE) - 1), $size);
9293
$onProgress([
9394
'$id' => $response['$id'],
94-
'progress' => min(($counter+1) * Client.CHUNK_SIZE, $size) / $size * 100,
95+
'progress' => min(($counter+1) * Client::CHUNK_SIZE, $size) / $size * 100,
9596
'sizeUploaded' => $end + 1,
9697
'chunksTotal' => $response['chunksTotal'],
9798
'chunksUploaded' => $response['chunksUploaded']

templates/python/package/client.py.twig

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class Client:
4949
data = {}
5050
json = {}
5151
files = {}
52+
stringify = False
5253

5354
headers = {**self._global_headers, **headers}
5455

@@ -62,7 +63,7 @@ class Client:
6263

6364
if headers['content-type'].startswith('multipart/form-data'):
6465
del headers['content-type']
65-
66+
stringify = True
6667
for key in data.copy():
6768
if isinstance(data[key], InputFile):
6869
files[key] = (data[key].name, data[key].file)
@@ -72,7 +73,7 @@ class Client:
7273
response = requests.request( # call method dynamically https://stackoverflow.com/a/4246075/2299554
7374
method=method,
7475
url=self._endpoint + path,
75-
params=self.flatten(params),
76+
params=self.flatten(params, stringify=stringify),
7677
data=self.flatten(data),
7778
json=json,
7879
files=files,
@@ -152,7 +153,7 @@ class Client:
152153

153154
return result
154155

155-
def flatten(self, data, prefix=''):
156+
def flatten(self, data, prefix='', stringify=False):
156157
output = {}
157158
i = 0
158159

@@ -163,9 +164,12 @@ class Client:
163164
i += 1
164165

165166
if isinstance(value, list) or isinstance(value, dict):
166-
output = {**output, **self.flatten(value, finalKey)}
167+
output = {**output, **self.flatten(value, finalKey, stringify)}
167168
else:
168-
output[finalKey] = value
169+
if stringify:
170+
output[finalKey] = str(value)
171+
else:
172+
output[finalKey] = value
169173

170174
return output
171175

templates/web/src/sdk.ts.twig

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -352,10 +352,10 @@ class {{ spec.title | caseUcfirst }} {
352352

353353
private async call(method: string, url: URL, headers: Headers = {}, params: Payload = {}): Promise<any> {
354354
method = method.toUpperCase();
355-
headers = {
356-
...headers,
357-
...this.headers
358-
}
355+
356+
357+
headers = Object.assign({}, this.headers, headers);
358+
359359
let options: RequestInit = {
360360
method,
361361
headers,

0 commit comments

Comments
 (0)