Skip to content

Commit f0d51c5

Browse files
committed
feat(nodejs) upload with token and videoId
1 parent 7844017 commit f0d51c5

File tree

2 files changed

+41
-10
lines changed

2 files changed

+41
-10
lines changed

templates/nodejs/doc/api/api_doc.md.mustache

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ All URIs are relative to *{{basePath}}*
2525
| Name | Type | Required | Description |
2626
| ------------- | ------------- | ------------- | ------------- |{{/-last}}{{/allParams}}
2727
{{#allParams}} | **{{paramName}}** | {{#isPrimitiveType}}**{{#isFile}}string \| Readable \| Buffer{{/isFile}}{{^isFile}}{{dataType}}{{/isFile}}**{{/isPrimitiveType}}{{^isPrimitiveType}}{{#isContainer}}**{{dataType}}**{{/isContainer}}{{#isFile}}**{{dataType}}**{{/isFile}}{{^isFile}}{{^isContainer}}[**{{dataType}}**](../model/{{baseType}}.md){{/isContainer}}{{/isFile}}{{/isPrimitiveType}}| {{#required}}**yes**{{/required}}{{^required}}no{{/required}}| {{description}} |
28-
{{/allParams}}{{#vendorExtensions.x-client-chunk-upload}}| **progressListener** | **(event: UploadProgressEvent) => void \| undefined** | no | Optional upload progress listener |{{/vendorExtensions.x-client-chunk-upload}}
28+
{{/allParams}}{{#vendorExtensions.x-client-chunk-upload}}| **progressListener** | **(event: UploadProgressEvent) => void \| undefined** | no | Optional upload progress listener |{{/vendorExtensions.x-client-chunk-upload}}{{#vendorExtensions.x-client-copy-from-response}}
29+
| **{{paramName}}** | **string \| undefined** | no | Optional {{paramName}} |{{/vendorExtensions.x-client-copy-from-response}}
2930

3031
### Return type
3132

templates/nodejs/src/api/api.ts.mustache

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,18 @@ export default class {{classname}} {
4141
{{#summary}}
4242
* {{&summary}}
4343
* This will create a progressive upload session.{{/summary}}{{#allParams}}{{^isFile}}
44-
* @param {{paramName}} {{description}}{{/isFile}}{{/allParams}}
44+
* @param {{paramName}} {{description}}{{/isFile}}{{/allParams}}{{#vendorExtensions.x-client-copy-from-response}}
45+
* @param {{paramName}} optional {{paramName}} value{{/vendorExtensions.x-client-copy-from-response}}
4546
*/
46-
public create{{#titlecase}}{{nickname}}{{/titlecase}}ProgressiveSession({{#allParams}}{{^isFile}}{{paramName}}{{^required}}?{{/required}}: {{{dataType}}}{{#vendorExtensions.x-optional-object}} = {}{{/vendorExtensions.x-optional-object}}{{^-last}}, {{/-last}}{{/isFile}}{{/allParams}}): ProgressiveSession<{{{returnType}}}> {
47+
public create{{#titlecase}}{{nickname}}{{/titlecase}}ProgressiveSession({{#allParams}}{{^isFile}}{{paramName}}{{^required}}?{{/required}}: {{{dataType}}}{{#vendorExtensions.x-optional-object}} = {}{{/vendorExtensions.x-optional-object}}{{^-last}}, {{/-last}}{{/isFile}}{{/allParams}}{{#vendorExtensions.x-client-copy-from-response}} {{paramName}}?: string, {{/vendorExtensions.x-client-copy-from-response}}): ProgressiveSession<{{{returnType}}}> {
4748
class {{#titlecase}}{{nickname}}{{/titlecase}}ProgressiveSession<Type> {
4849
private httpClient: HttpClient;
4950
private currentPart = 1;{{#vendorExtensions.x-client-copy-from-response}}
5051
private {{paramName}}?: string;{{/vendorExtensions.x-client-copy-from-response}}
5152

52-
constructor(httpClient: HttpClient) {
53-
this.httpClient = httpClient;
53+
constructor(httpClient: HttpClient{{#vendorExtensions.x-client-copy-from-response}}, {{paramName}}?: string{{/vendorExtensions.x-client-copy-from-response}}) {
54+
this.httpClient = httpClient;{{#vendorExtensions.x-client-copy-from-response}}
55+
this.{{paramName}} = {{paramName}};{{/vendorExtensions.x-client-copy-from-response}}
5456
}
5557

5658
uploadPart(file: string, progressListener?: (event: UploadProgressEvent) => void) {
@@ -174,7 +176,7 @@ export default class {{classname}} {
174176
}
175177
}
176178

177-
return new {{#titlecase}}{{nickname}}{{/titlecase}}ProgressiveSession<{{{returnType}}}>(this.httpClient);
179+
return new {{#titlecase}}{{nickname}}{{/titlecase}}ProgressiveSession<{{{returnType}}}>(this.httpClient{{#vendorExtensions.x-client-copy-from-response}}, {{paramName}}{{/vendorExtensions.x-client-copy-from-response}});
178180
}
179181
{{/vendorExtensions.x-client-chunk-upload}}
180182
{{#vendorExtensions.x-group-parameters}}
@@ -204,10 +206,15 @@ export default class {{classname}} {
204206
* @param {{paramName}} {{description}}
205207
{{/allParams}}
206208
*/
207-
public async {{nickname}}({{#allParams}}{{paramName}}{{^required}}?{{/required}}: {{#isFile}}{{#vendorExtensions.x-client-chunk-upload}}string{{/vendorExtensions.x-client-chunk-upload}}{{^vendorExtensions.x-client-chunk-upload}}string | Readable | Buffer{{/vendorExtensions.x-client-chunk-upload}}{{/isFile}}{{^isFile}}{{{dataType}}}{{/isFile}}{{#vendorExtensions.x-optional-object}} = {}{{/vendorExtensions.x-optional-object}}{{^-last}}, {{/-last}}{{/allParams}}{{#vendorExtensions.x-client-chunk-upload}}, progressListener?: (event: UploadProgressEvent) => void{{/vendorExtensions.x-client-chunk-upload}}): Promise<{{#returnType}}{{{returnType}}}{{/returnType}} {{^returnType}}void{{/returnType}}> {
209+
public async {{nickname}}({{#allParams}}{{paramName}}{{^required}}?{{/required}}: {{#isFile}}{{#vendorExtensions.x-client-chunk-upload}}string{{/vendorExtensions.x-client-chunk-upload}}{{^vendorExtensions.x-client-chunk-upload}}string | Readable | Buffer{{/vendorExtensions.x-client-chunk-upload}}{{/isFile}}{{^isFile}}{{{dataType}}}{{/isFile}}{{#vendorExtensions.x-optional-object}} = {}{{/vendorExtensions.x-optional-object}}{{^-last}}, {{/-last}}{{/allParams}}{{#vendorExtensions.x-client-chunk-upload}}, progressListener?: (event: UploadProgressEvent) => void, {{/vendorExtensions.x-client-chunk-upload}}{{#vendorExtensions.x-client-copy-from-response}}{{paramName}}?: string, {{/vendorExtensions.x-client-copy-from-response}}): Promise<{{#returnType}}{{{returnType}}}{{/returnType}} {{^returnType}}void{{/returnType}}> {
208210
{{/vendorExtensions.x-group-parameters}}
209211
const queryParams: QueryOptions = {};
210212
queryParams.headers = {};
213+
{{#vendorExtensions.x-client-chunk-upload}}
214+
const toRelay: { [key: string]: string | undefined } = {
215+
{{#vendorExtensions.x-client-copy-from-response}}{{paramName}}, {{/vendorExtensions.x-client-copy-from-response}}
216+
};
217+
{{/vendorExtensions.x-client-chunk-upload}}
211218
{{#allParams}}
212219
{{#required}}
213220
{{^isFile}}
@@ -301,8 +308,20 @@ export default class {{classname}} {
301308

302309
{{#hasFormParams}}
303310
const formData = new FormData();
304-
{{/hasFormParams}}
311+
312+
{{/hasFormParams}}{{#vendorExtensions.x-client-copy-from-response}}
313+
Object.keys(toRelay).forEach((key) => {
314+
if (toRelay[key] !== undefined) {
315+
formData.append(key, toRelay[key]);
316+
}
317+
});
318+
{{/vendorExtensions.x-client-copy-from-response}}
305319
{{#formParams}}
320+
{{#vendorExtensions.x-client-copy-from-response}}
321+
if ({{paramName}}) {
322+
formData.append('{{paramName}}', {{paramName}});
323+
}
324+
{{/vendorExtensions.x-client-copy-from-response}}
306325
{{#isArray}}
307326
if ({{paramName}}) {
308327
{{#isCollectionFormatMulti}}
@@ -316,7 +335,6 @@ export default class {{classname}} {
316335
}
317336
{{/isArray}}
318337
{{^isArray}}
319-
320338
{{^isFile}}
321339
if (typeof {{paramName}} !== undefined) {
322340
formData.append('{{baseName}}', {{paramName}});
@@ -362,7 +380,7 @@ export default class {{classname}} {
362380
) as {{{returnType}}});
363381
}
364382
let uploadChunkSize = chunkSize;
365-
let lastBody;
383+
let lastBody: {{{returnType}}} | undefined = undefined;
366384
let stream;
367385
let chunkNumber = 0;
368386

@@ -383,6 +401,12 @@ export default class {{classname}} {
383401
stream = createReadStream(file, { start: offset, end: uploadChunkSize + offset - 1});
384402
chunkFormData.append(filename, stream, filename);
385403

404+
Object.keys(toRelay).forEach((key) => {
405+
if (toRelay[key] !== undefined) {
406+
chunkFormData.append(key, toRelay[key]);
407+
}
408+
});
409+
386410
queryParams.body = chunkFormData;
387411
queryParams.headers['Content-Range'] = `part ${part}/${partsCount}`;
388412
part++;
@@ -407,6 +431,12 @@ export default class {{classname}} {
407431
"{{{returnType}}}", "{{returnFormat}}"
408432
) as {{{returnType}}});
409433

434+
Object.keys(toRelay).forEach((key) => {
435+
if ((lastBody as unknown as any)[key] !== undefined) {
436+
toRelay[key] = (lastBody as unknown as any)[key];
437+
}
438+
});
439+
410440
stream.close();
411441
}
412442

0 commit comments

Comments
 (0)