@@ -50,63 +50,78 @@ class {{ service.name | caseUcfirst }} extends Service {
50
50
const { size: size } = await promisify(fs.stat)({{ parameter .name | caseCamel | escapeKeyword }});
51
51
52
52
if (size < = client.CHUNK_SIZE) {
53
- payload['{{ parameter .name }}'] = fs.createReadStream({{ parameter .name | caseCamel | escapeKeyword }});
53
+ payload['{{ parameter .name }}'] = fs.createReadStream({{ parameter .name | caseCamel | escapeKeyword }});
54
54
55
- return await this.client.call('{{ method .method | caseLower }}', path, {
55
+ return await this.client.call('{{ method .method | caseLower }}', path, {
56
56
{% for parameter in method .parameters .header %}
57
57
'{{ parameter .name }}': ${{ parameter .name | caseCamel | escapeKeyword }},
58
58
{% endfor %}
59
59
{% for key , header in method .headers %}
60
60
'{{ key }}': '{{ header }}',
61
61
{% endfor %}
62
- }, payload{% if method .type == ' location' %}, 'arraybuffer'{% endif %});
62
+ }, payload{% if method .type == ' location' %}, 'arraybuffer'{% endif %});
63
63
} else {
64
- let id = undefined;
65
- let response = undefined;
64
+ let id = undefined;
65
+ let response = undefined;
66
66
67
- const totalCounters = Math.ceil(size / client.CHUNK_SIZE);
67
+ let counter = 0;
68
+ const totalCounters = Math.ceil(size / client.CHUNK_SIZE);
68
69
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 = {
73
71
{% for parameter in method .parameters .header %}
74
- '{{ parameter .name }}': ${{ parameter .name | caseCamel | escapeKeyword }},
72
+ '{{ parameter .name }}': ${{ parameter .name | caseCamel | escapeKeyword }},
75
73
{% endfor %}
76
74
{% 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 %}
78
89
{% endfor %}
79
- 'content-range': 'bytes ' + start + '-' + end + '/' + size
80
- };
81
-
82
- if (id) {
83
- headers['x-{{spec .title | caseLower }}-id'] = id;
84
- }
85
-
86
- const stream = fs.createReadStream({{ parameter .name | caseCamel | escapeKeyword }}, {
87
- start,
88
- end
89
- });
90
- payload['{{ parameter .name }}'] = stream;
91
-
92
- response = await this.client.call('{{ method .method | caseLower }}', path, headers, payload{% if method .type == ' location' %}, 'arraybuffer'{% endif %});
93
-
94
- if (!id) {
95
- id = response['$id'];
96
- }
97
-
98
- if (onProgress !== null) {
99
- onProgress({
100
- $id: response['$id'],
101
- progress: Math.min((counter+1) * client.CHUNK_SIZE, size) / size * 100,
102
- sizeUploaded: end+1,
103
- chunksTotal: response['chunksTotal'],
104
- chunksUploaded: response['chunksUploaded']
105
- });
106
- }
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;
96
+
97
+ if (id) {
98
+ headers['x-{{spec .title | caseLower }}-id'] = id;
99
+ }
100
+
101
+ const stream = fs.createReadStream({{ parameter .name | caseCamel | escapeKeyword }}, {
102
+ start,
103
+ end
104
+ });
105
+ payload['{{ parameter .name }}'] = stream;
106
+
107
+ response = await this.client.call('{{ method .method | caseLower }}', path, headers, payload{% if method .type == ' location' %}, 'arraybuffer'{% endif %});
108
+
109
+ if (!id) {
110
+ id = response['$id'];
111
+ }
112
+
113
+ if (onProgress !== null) {
114
+ onProgress({
115
+ $id: response['$id'],
116
+ progress: Math.min((counter+1) * client.CHUNK_SIZE, size) / size * 100,
117
+ sizeUploaded: end+1,
118
+ chunksTotal: response['chunksTotal'],
119
+ chunksUploaded: response['chunksUploaded']
120
+ });
107
121
}
122
+ }
108
123
109
- return response;
124
+ return response;
110
125
}
111
126
{% endif %}
112
127
{% endfor %}
0 commit comments