@@ -73,134 +73,11 @@ export class {{ service.name | caseUcfirst }} extends Service {
73
73
{% endif %}
74
74
{% endfor %}
75
75
let path = '{{ method .path }}'{% for parameter in method .parameters .path %}.replace('{{ ' {' }}{{ parameter .name }}{{ ' }' }}', {{ parameter .name | caseCamel | escapeKeyword }}){% endfor %};
76
- let payload: Payload = {};
77
-
78
- {% for parameter in method .parameters .query %}
79
- if (typeof {{ parameter .name | caseCamel | escapeKeyword }} !== 'undefined') {
80
- payload['{{ parameter .name }}'] = {{ parameter .name | caseCamel | escapeKeyword }}{% if method .consumes [0 ] == " multipart/form-data" and ( parameter .type != " string" and parameter .type != " array" and parameter .type != " file" ) %}.toString(){% endif %};
81
- }
82
-
83
- {% endfor %}
84
- {% for parameter in method .parameters .body %}
85
- if (typeof {{ parameter .name | caseCamel | escapeKeyword }} !== 'undefined') {
86
- payload['{{ parameter .name }}'] = {{ parameter .name | caseCamel | escapeKeyword }}{% if method .consumes [0 ] == " multipart/form-data" and ( parameter .type != " string" and parameter .type != " array" and parameter .type != " file" ) %}.toString(){% endif %};
87
- }
88
- {% endfor %}
76
+ {{include (' deno/base/params.twig' )}}
89
77
{% if ' multipart/form-data' in method .consumes %}
90
- {% for parameter in method .parameters .all %}
91
- {% if parameter .type == ' file' %}
92
-
93
- const size = {{ parameter .name | caseCamel | escapeKeyword }}.size;
94
-
95
- const headers: { [header: string]: string } = {
96
- {% for parameter in method .parameters .header %}
97
- '{{ parameter .name }}': ${{ parameter .name | caseCamel | escapeKeyword }},
98
- {% endfor %}
99
- {% for key , header in method .headers %}
100
- '{{ key }}': '{{ header }}',
101
- {% endfor %}
102
- };
103
-
104
- let id: string | undefined = undefined;
105
- let response: any = undefined;
106
-
107
- let chunksUploaded = 0;
108
-
109
- {% for parameter in method .parameters .all %}
110
- {% if parameter .isUploadID %}
111
- if({{ parameter .name | caseCamel | escapeKeyword }} != 'unique()') {
112
- try {
113
- response = await this.client.call('get', path + '/' + {{ parameter .name }}, headers);
114
- chunksUploaded = response.chunksUploaded;
115
- } catch(e) {
116
- }
117
- }
118
- {% endif %}
119
- {% endfor %}
120
-
121
- let currentChunk = 1;
122
- let currentPosition = 0;
123
- let uploadableChunk = new Uint8Array(Client.CHUNK_SIZE);
124
-
125
- const uploadChunk = async (lastUpload = false) => {
126
- if(currentChunk < = chunksUploaded) {
127
- return;
128
- }
129
-
130
- const start = ((currentChunk - 1) * Client.CHUNK_SIZE);
131
- const end = start + currentPosition;
132
-
133
- if(!lastUpload || currentChunk !== 1) {
134
- headers['content-range'] = 'bytes ' + start + '-' + end + '/' + size;
135
- }
136
-
137
- let uploadableChunkTrimmed: Uint8Array;
138
-
139
- if(currentPosition + 1 >= Client.CHUNK_SIZE) {
140
- uploadableChunkTrimmed = uploadableChunk;
141
- } else {
142
- uploadableChunkTrimmed = new Uint8Array(currentPosition);
143
- for(let i = 0; i < = currentPosition; i++) {
144
- uploadableChunkTrimmed[i] = uploadableChunk[i];
145
- }
146
- }
147
-
148
- if (id) {
149
- headers['x-{{spec .title | caseLower }}-id'] = id;
150
- }
151
-
152
- payload['{{ parameter .name }}'] = { type: 'file', file: new File([uploadableChunkTrimmed], {{ parameter .name | caseCamel | escapeKeyword }}.filename), filename: {{ parameter .name | caseCamel | escapeKeyword }}.filename };
153
-
154
- response = await this.client.call('{{ method .method | caseLower }}', path, headers, payload{% if method .type == ' ___location' %}, 'arraybuffer'{% endif %});
155
-
156
- if (!id) {
157
- id = response['$id'];
158
- }
159
-
160
- if (onProgress !== null) {
161
- onProgress({
162
- $id: response['$id'],
163
- progress: Math.min((currentChunk) * Client.CHUNK_SIZE, size) / size * 100,
164
- sizeUploaded: end+1,
165
- chunksTotal: response['chunksTotal'],
166
- chunksUploaded: response['chunksUploaded']
167
- });
168
- }
169
-
170
- uploadableChunk = new Uint8Array(Client.CHUNK_SIZE);
171
- currentPosition = 0;
172
- currentChunk++;
173
- }
174
-
175
- for await (const chunk of {{ parameter .name | caseCamel | escapeKeyword }}.stream) {
176
- let i = 0;
177
- for(const b of chunk) {
178
- uploadableChunk[currentPosition] = chunk[i];
179
-
180
- if(currentPosition + 1 >= Client.CHUNK_SIZE) {
181
- await uploadChunk();
182
- currentPosition--;
183
- }
184
-
185
- i++;
186
- currentPosition++;
187
- }
188
- }
189
-
190
- await uploadChunk(true);
191
-
192
- return response;
193
- {% endif %}
194
- {% endfor %}
78
+ {{include (' deno/base/requests/file.twig' )}}
195
79
{% else %}
196
- return await this.client.call('{{ method .method | caseLower }}', path, {
197
- {% for parameter in method .parameters .header %}
198
- '{{ parameter .name }}': ${{ parameter .name | caseCamel | escapeKeyword }},
199
- {% endfor %}
200
- {% for key , header in method .headers %}
201
- '{{ key }}': '{{ header }}',
202
- {% endfor %}
203
- }, payload);
80
+ {{include (' deno/base/requests/api.twig' )}}
204
81
{% endif %}
205
82
}
206
83
{% endfor %}
0 commit comments