Skip to content

Commit c81546b

Browse files
committed
Node resumable upload
1 parent 1d5293d commit c81546b

File tree

1 file changed

+23
-8
lines changed

1 file changed

+23
-8
lines changed

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

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,20 +64,35 @@ class {{ service.name | caseUcfirst }} extends Service {
6464
let id = undefined;
6565
let response = undefined;
6666

67+
let counter = 0;
6768
const totalCounters = Math.ceil(size / client.CHUNK_SIZE);
6869

69-
for (let counter = 0; counter < totalCounters; counter++) {
70-
const start = (counter * client.CHUNK_SIZE);
71-
const end = Math.min((((counter * client.CHUNK_SIZE) + client.CHUNK_SIZE) - 1), size);
72-
const headers = {
70+
const headers = {
7371
{% for parameter in method.parameters.header %}
74-
'{{ parameter.name }}': ${{ parameter.name | caseCamel | escapeKeyword }},
72+
'{{ parameter.name }}': ${{ parameter.name | caseCamel | escapeKeyword }},
7573
{% endfor %}
7674
{% for key, header in method.headers %}
77-
'{{ key }}': '{{ header }}',
75+
'{{ key }}': '{{ header }}',
76+
{% endfor %}
77+
};
78+
79+
{% for parameter in method.parameters.all %}
80+
{% if parameter.isUploadID %}
81+
if({{ parameter.name | caseCamel | escapeKeyword }} != 'unique()') {
82+
try {
83+
response = await this.client.call('get', path + '/' + {{ parameter.name }}, headers);
84+
counter = response.chunksUploaded;
85+
} catch(e) {
86+
}
87+
}
88+
{% endif %}
7889
{% endfor %}
79-
'content-range': 'bytes ' + start + '-' + end + '/' + size
80-
};
90+
91+
for (counter; counter < totalCounters; counter++) {
92+
const start = (counter * client.CHUNK_SIZE);
93+
const end = Math.min((((counter * client.CHUNK_SIZE) + client.CHUNK_SIZE) - 1), size);
94+
95+
headers['content-range'] = 'bytes ' + start + '-' + end + '/' + size;
8196

8297
if (id) {
8398
headers['x-{{spec.title | caseLower }}-id'] = id;

0 commit comments

Comments
 (0)